任何人都可以帮助我吗?我想要一个带有动画的下拉菜单,其中包含mouseenter和mouseleave事件,但是当鼠标输入后单击时,我希望子菜单保持可见,直到在页面中的任何位置新单击(在示例中仅在正文中)。在第二次点击之后(与mouseleave相同的动画)我想要mouseenter和mouseleave .on就像我们开始时一样。
$('#menu > li').on('mouseenter',function(){
//mouseenter handler
});
$('#menu > li').on('mouseleave',function(){
//mouseleave handler
});
$('#menu > li').toggle(
function () {
$('#menu > li').off('mouseenter mouseleave');
},
function () {
//mouseleave handler
});
$('body').click(function(){
//same mouseleave handler
});
我不知道如何在第二次点击后启用mouseenter / mouseleave。对不起,谢谢。
答案 0 :(得分:1)
使用事件委派可以大大简化:
$('document').on("click",'#menu > li', function() {
$('#menu > li').off('mouseenter mouseleave');
});
$('document').on("click",':not(#menu > li)', function() {
$('#menu > li').on('mouseenter', function(){
//your mouseenter handler goes here
});
$('#menu > li').on('mouseleave', function(){
//your mouseleave handler goes here
});
});
这在语义上等同于:
If a click happens on a menu item, unbind mouse enter/leave events
If a click happens on a non menu item, bind mouse enter/leave events