对mouseleave有效,但如果超过特定元素则不会

时间:2014-01-28 14:11:46

标签: jquery

如果光标位于某个元素上,是否可以将鼠标效果始终除外?

所以说我有两个名为div1和div2的div,我会通过这样做得到mouseleave效果:

$('div.div1').mouseleave(function() {
    alert('code');
});

鼠标离开div2后光标是否超过div1,我可以获得相同的效果吗?

4 个答案:

答案 0 :(得分:16)

JS小提琴:http://jsfiddle.net/HBCWs/

$( function() {
    $('.div1').mouseleave( function(e) {
        if( ! $(e.toElement).hasClass('div2') ) {
            alert( 'not div2!' );
        }
    });
});

您可以使用jquery事件对象的toElement属性来检查离开.div1后鼠标移动到哪个元素

答案 1 :(得分:3)

这个帖子可能有帮助吗?

Check what element the cursor is on upon mouseleave() with jQuery?

他似乎想要做类似的事情,这被接受为答案:

  

您需要使用event.toElement || e.relatedTarget:

     

$('li')。mouseleave(function(e){

// new element is: e.toElement || e.relatedTarget 
     

});

或者我误解了你的问题?

答案 2 :(得分:1)

$('div.div1').not('div2').mouseleave(function() {
alert('code');
});

http://api.jquery.com/not/

答案 3 :(得分:0)

检查以下小提琴,当鼠标离开div1时,会显示一条警告信息,但当鼠标离开div2时,不会触发事件。

http://jsfiddle.net/ACuE8/

$('div#div1').mouseleave(function() {
  alert("In div 1");
});