2013-02-28 67 views
1

我目前正在使用jQuery创建内容。使用jQuery委托()替换live()

Live(),根据jQuery API描述:为所有与当前选择器匹配的元素,现在和未来添加一个事件处理函数。。我需要这行代码在未来工作。

$(".trash").delegate('.delete_gallery', 'click', function(event) { //不起作用 $(".delete_gallery").live("click", function(event) { //工作

我怎样才能获得委托工作?我不想使用弃用的函数。

.on()不是一个选择。希望这也不是一个重复的问题,我找不到任何解决这个问题的办法,他们都只是说怎么做。

谢谢! 雅各

+2

为什么'.on()'不是一个选项? – 2013-02-28 06:35:49

+0

只是一个理智的检查,但是.delete_gallery是.trash的一个孩子吗? – pdoherty926 2013-02-28 06:37:40

+0

@ethagnawl,是的,还有Austin,我无法控制插件用户使用的jQuery版本。 – 2013-02-28 06:44:32

回答

1

你会更好委托的事件处理程序的$(document),而不是$(”垃圾“),因为它意味着你不能依靠它现有的。

+0

你能澄清一下,因为这实际上解决了它。 .delete_gallery是.trash的直接子,所以我认为直接更好会更好。 – 2013-02-28 06:45:27

+1

@Jacob,你的'.trash'元素可能是动态的。事件委派通过将*非动态*祖先上的事件绑定到动态内容来工作。 “文档”是可以工作的,因为它是DOM树的根源,因此始终是静态的。 – 2013-02-28 06:47:53

+0

这似乎是这种情况。谢谢!选择这个答案,因为它保持原因。 – 2013-02-28 06:53:13

1

尝试

$(document).delegate('.delete_gallery', 'click', function(event) { 
0

你还有.bind()

$(".trash").bind('click', function(event) { 
+3

'.bind()'只适用于先前存在的元素,而不适用于未来 – 2013-02-28 06:48:06