jQuery Geniuses - Init插件和事件委派

时间:2013-09-27 00:20:16

标签: jquery superfish event-delegation

而不是手动初始化每个实例:

$("#MyChildId1").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });
$("#MyChildId2").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });
$("#MyChildId3").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });

我想使用jQuery插件(Superfish)的多个(和动态)实例,并使用事件委派对父进行一次调用来启动它们:

$("#MyParentId").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });

但这不起作用,即使文档说它现在使用事件委派: http://users.tpg.com.au/j_birch/plugins/superfish/

最后一个项目: “•使用v1.5.1中的事件委托,以获得更高的性能和灵活性。”

任何jQuery Geniuses都知道它是什么?

1 个答案:

答案 0 :(得分:0)

您可以选择所有菜单,然后循环浏览它们以启动它们。

$("#MyParentId").find("ul.sf-menu").each(function () {
    $(this).superfish({ delay: 100, speed: 'fast' });
});

.each()的文档:http://api.jquery.com/each

你也可以使用:

例如:

var $menus = $("#MyParentId").find("ul.sf-menu");
for (var i = 0, l = $menus.length; i < l; i++) {
    $menus.eq(i).superfish({ delay: 100, speed: 'fast' });
}

for循环的运行速度比jQuery .each()循环略快,我相信主要是因为.each()循环为每次迭代创建了一个IIFE(例如for (...) { (function () {...})(); })。