javascript - Jquery:为什么如果我在其他内部有一个jquery触发器,第二个触发器会多次触发?

标签 javascript jquery

我有以下代码来切换垂直下拉菜单。当我在“ul > li > a”中多次鼠标输入并且在选择子菜单并进入其中后,第二个触发器多次触发时,就会出现问题。

$('nav > ul > li > a').on('mouseenter',function(e){
    var currentID = this;
    var index = $('ul.topnav > li > a').index(this);
    $(this).addClass('selected');
    $('nav ul ul').css('margin-top',(38*parseInt(index)));

    $(this).parent().find('ul').on('mouseenter',function(e){
        //fire several times
        console.log('hover');           
        $(currentID).addClass('selected');
    }).on('mouseleave',function(e){
        $(currentID).removeClass('selected');
        //fire several times
        console.log('end hover');
    });

}).on('mouseleave',function(e){
    $(this).removeClass('selected');
);

最佳答案

每次执行外部 mouseenter 回调时,它都会将新的附加事件处理程序附加到 ul (这将执行与之前附加的处理程序相同的操作。

当鼠标进入该 ul 时,将调用所有附加的事件处理程序。

您只应附加事件处理程序一次,而不是在每个 mouseenter 上附加一次。

关于javascript - Jquery:为什么如果我在其他内部有一个jquery触发器,第二个触发器会多次触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553000/

相关文章:

javascript - 从数组数组中获取最小数组

javascript - 如果 tr 没有子项,则删除它 - ng-repeat - Angular

javascript - 使用 AngularJS 进行服务器轮询

javascript - Node.js 和 xlsjs 或 exceljs

javascript - Rails 如何制作过滤链接

javascript - 从ajax数据设置App

javascript - JQuery 测试元素是否可见或隐藏,然后添加删除类

javascript - javascript :method() and just plain method() 有什么区别

javascript - 检查复选框是否被选中或不使用javascript中的变量

javascript - 使用 jquery $.ajax 到 PHP post GET 值