jQuery委托优化

jQuery委托优化,jquery,optimization,refactoring,Jquery,Optimization,Refactoring,优化以下使用delegate()的代码段的最佳方法是什么 jQuery('.menu').delegate('li.gallery','hover',function(){jQuery(this).children('.submenu').toggleClass('hide-show');}); jQuery('.menu').delegate('li.interior','hover',function(){jQuery(this).children('.submenu').toggleCla

优化以下使用delegate()的代码段的最佳方法是什么

jQuery('.menu').delegate('li.gallery','hover',function(){jQuery(this).children('.submenu').toggleClass('hide-show');});
jQuery('.menu').delegate('li.interior','hover',function(){jQuery(this).children('.submenu').toggleClass('hide show');});
jQuery('.menu').delegate('li.external','hover',function(){jQuery(this).children('.submenu').toggleClass('hide show');});
  • 画廊
  • 您可以在选择器参数中使用

    但是,由于(关闭
    mouseover
    /
    mouseout
    ,当进入一个孩子时会触发),我现在要避开它并直接绑定,如下所示:

    jQuery('.menu').find('li.gallery, li.interior, li.exterior').hover(function () {
      jQuery(this).children('.submenu').toggleClass('hide show'); 
    });
    

    你为什么要优化?可读性?速度可扩展性?可读性和速度。没有扩展的意图。包括
    .menu
    将是一个开始。@peter,你可以相信我的话,上面的代码在ul.menu:)原始代码可以工作,我只是想简化它。我也这么认为,但当我将鼠标悬停在子菜单上时,第一个切换再次触发。我在上面添加了标记。@matt-您使用的是哪个版本的jQuery
    hover
    直到最近才被正确添加。@nick 1.4.2,我认为是唯一一个有委托的版本。@matt-1.4.3在这里做了一些更改,只是为了好玩,试试1.4.3?@matt-我知道你遇到了问题,这是由于
    的方式。live()
    映射到
    mouseneter
    mouseleave
    事件,等一下。
    jQuery('.menu').find('li.gallery, li.interior, li.exterior').hover(function () {
      jQuery(this).children('.submenu').toggleClass('hide show'); 
    });