jQuery委托优化
优化以下使用delegate()的代码段的最佳方法是什么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
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-您使用的是哪个版本的jQueryhover
直到最近才被正确添加。@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');
});