我有这个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 */});
答案 0 :(得分:3)
使用mouseenter
和mouseleave
代替mouseover
和mouseout
来解决您的问题。
$(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){
});