te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - check if this element OR this element is hovered with jQuery - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - check if this element OR this element is hovered with jQuery - Stack Overflow

programmeradmin4浏览0评论

I have two separate elements in my DOM that require a change when either one is hovered. When the link is hovered, the image src needs to change (easy) AND the link color needs to change. When the image is hovered, the same effect needs to happen (image src changes & link color changes)

This is actually quite easy to do, but I have a feeling there is a MUCH easier way to do it then the approach I am taking. Currently I am going through each of the 8 elements and testing if they are hovered individually. This works good, but there is so much more jQuery here than I feel there should be.

I tried adding the attribute onmouseover to both of the elements and triggering the same function, but for some reason the function wasn't triggering.

Is there a way to test if either element is hovered and trigger a function if either one is? Something like this:

if($(#elm1).hover() || $('#elm2').hover()) {
    //effect here
}

OR

if($('#elm1').is(':hover') || $('#elm2').is(':hover')) {
    //effect here
}

I tried my example code above, but wasn't getting any results. Is there a way to do this or am I stuck with checking each individual element?

I have two separate elements in my DOM that require a change when either one is hovered. When the link is hovered, the image src needs to change (easy) AND the link color needs to change. When the image is hovered, the same effect needs to happen (image src changes & link color changes)

This is actually quite easy to do, but I have a feeling there is a MUCH easier way to do it then the approach I am taking. Currently I am going through each of the 8 elements and testing if they are hovered individually. This works good, but there is so much more jQuery here than I feel there should be.

I tried adding the attribute onmouseover to both of the elements and triggering the same function, but for some reason the function wasn't triggering.

Is there a way to test if either element is hovered and trigger a function if either one is? Something like this:

if($(#elm1).hover() || $('#elm2').hover()) {
    //effect here
}

OR

if($('#elm1').is(':hover') || $('#elm2').is(':hover')) {
    //effect here
}

I tried my example code above, but wasn't getting any results. Is there a way to do this or am I stuck with checking each individual element?

Share Improve this question asked Nov 19, 2013 at 16:18 Ty BaileyTy Bailey 2,43211 gold badges48 silver badges79 bronze badges 4
  • var isHovered = $('#elem').is(":hover"); to return boolean – deb0rian Commented Nov 19, 2013 at 16:19
  • why dont you add a class like hovered when you do hover() and check .hovered :) – Murali Murugesan Commented Nov 19, 2013 at 16:19
  • 1 Because I guess jQuery already stores that state, making it double won't do anything good – deb0rian Commented Nov 19, 2013 at 16:20
  • the var isHovered thing won't work because I still have to check 8 different elements individually with that. I'm trying to check the link and the image in the same function. – Ty Bailey Commented Nov 19, 2013 at 16:22
Add a ment  | 

3 Answers 3

Reset to default 8

It works, you're just running it on page load, not when the mouse moves

$(document).mousemove(function() {    
    if($('#elm1').is(':hover') || $('#elm2').is(':hover')) {
        // Do stuff
    }
    else {
        // Revert do stuff or do other stuff
    }
});

Example here

But, as other's have said, jQuery already knows the hover state, so doing it this way would be unnecessary. In practice you should use the same selector to apply the function to it

$('#idOne, #idTwo').hover(function() { /* Do stuff */ });

I would register events on mouseover and whenever the event happens trigger a function

$("#elm1, #elm2").on("mouseover", function () {
    // effect here
});

Why not simply add the handler to both elements like this :

$('#elm1, #elm2').hover(function(){
     // ... do stuff here ...
});

Should work . . .

发布评论

评论列表(0)

  1. 暂无评论