2013-03-01 68 views
2

一直没能得到这个工作。如果没有要我的确切情况,为什么我试图做我在做什么,一个基本的抽象是:如何在鼠标输入子元素时不触发mouseleave父项?

我有一个父里面4个元素的子元素。我目前是附加mouseenter给孩子这样:

$('.parent').on('mouseenter', '.child', function() { 
    showSomething(); 
}); 

然后我想说

$('.parent').on('mouseleave', function() { 
    hideSameSomething(); 
}); 

但是,当孩子上mouseenter触发父一个mouseleave,并创建一个讨厌的闪烁。我试过e.stopPropagation()对孩子处理程序,但没有运气。任何想法如何不火,当我进入子元素,只有当我真正离开父父mouseleave事件?谢谢。

回答

2

尝试组合这两个合为一体。

公文http://api.jquery.com/on/#on-events-selector-data

$(".parent, .child").on({ 
    mouseenter: function() { 
     // Handle mouseenter... 
    }, 
    mouseleave: function() { 
     // Handle mouseleave... 
    } 
}); 
+0

这就是绑定的事件唯一的孩子。我希望事件通过没有任何由父发射时我的MouseEnter孩子进行单独处理,只是当我从字面上鼠标离开母体。 – Matt 2013-03-01 07:10:04

+0

我认为他想说:'$( “父,.child”)' – Arthur 2016-11-26 18:16:24

1

尝试:

$('.parent .child').on("mouseenter", function() { 

    showSomething(); 

    $(this).closest('.parent').on("mouseleave", function() { 
     hideSameSomething(); 
    }); 

}); 
相关问题