检查光标是否在元素的父元素内

时间:2015-02-09 12:43:24

标签: javascript jquery

我有这个HTML

<div class='parent'> 
     <div class='child'></div> 
</div>

我想向parent元素添加mouseover和mouseout事件,但问题是当光标悬停child elemet时它会触发mouseout事件,尽管它仍然在parent元素内部。 如何避免这种情况让mouseout事件仅在光标离开parent项时触发。

$(body).on('mouseover', '.parent' , function(){ /* do somthing */}); 
$(body).on('mouseout',  '.parent' , function(){ /* do another somthing */});

3 个答案:

答案 0 :(得分:3)

使用mouseentermouseleave代替mouseovermouseout来解决您的问题。

$(document).on('mouseenter', '.parent' , function(){
    console.log("Mouse Enter");
}); 
$(document).on('mouseleave',  '.parent' , function(){ 
        console.log("Mouse Leave");
});

请勿使用stopPropagation(),因为The Dangers of Stopping Event Propagation

<强> Demo

答案 1 :(得分:1)

您需要停止孩子event的{​​{3}}:

$(body).on('mouseover', '.child' , function(e){
    e.stopPropagation();
}); 
$(body).on('mouseout',  '.child' , function(e){
    e.stopPropagation();
});

答案 2 :(得分:0)

使用mouseenter / mouseleave事件而不是mouseover / mouseout:

$(body).on('mouseenter', '.child' , function(e){

}); 
$(body).on('mouseleave',  '.child' , function(e){

});