【发布时间】:2013-09-27 00:20:15
【问题描述】:
朋友们,
而不是手动初始化每个实例:
$("#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 都知道发生了什么?
【问题讨论】:
-
除非插件使用
return this.each(...之类的东西来迭代传递的元素集合,否则您只能在一个元素上使用它(这很糟糕,插件就是这样)。 -
它应该可以工作......从我在插件中看到的内容
-
是的,插件在 init 中有 this.each(... 但是当我尝试 $("#MyParentId").find("ul.sf-menu").. .孩子们不能调用 show() 方法。也许是因为 ($el).data('sf-options') 被设置在父母身上,而不是孩子们所以他们不能调用 show()方法。Doh。
-
如果它在 init 中使用 this.each(...,当你动态插入新的孩子时会发生什么?他们还会冒泡吗?
-
我可以确认,他们没有。您只会得到 init 中连接的内容:this.each( 在页面加载时。动态添加的任何子项都会丢失 init 连接。
标签: jquery superfish event-delegation