0

朋友们,

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

$("#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 都知道这是怎么回事?

4

1 回答 1

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 () {...})(); })。

于 2013-09-27T00:23:37.130 回答