关于unbind的jQuery问题

时间:2011-07-27 09:44:50

标签: javascript jquery unbind

我可以在live()

中使用jQuery unbind()吗?

e.g。

$(".content_media").unbind("touchstart").live("touchstart",function(){....});

如果是,那究竟是什么意思?基本上我想了解一个解开的意思是什么

我有一个页面,我在文件准备好的时候绑定元素......在两者之间有AJAX callls哪种重写相同的元素......现在我希望它们在任何时候都表现得相似......这就是为什么我使用了live()

如果在这里有一些例外,其中live()绑定不起作用,请纠正我。

5 个答案:

答案 0 :(得分:0)

Unbind意味着从一组元素中删除事件处理程序。你只能删除一些事件处理程序

$(".content_media").unbind("click");
//it means delete all click handlers on elements with class content_media

或所有事件处理程序

$(".content_media").unbind()
//it means delete all handlers on elements with class content_media

你可以在解除绑定后绑定新的直播事件,live()的注意力是这个(取自文档)

  

因为.live()方法将事件处理程序绑定到document by   默认情况下,在文档上调用.unbind()将取消绑定处理程序绑定   由.live(),以及。例如,$(document).unbind('click');将   不仅删除$(document).bind('click',fn1)而且   $('a.foo')。live('click',fn2)。

答案 1 :(得分:0)

取消绑定意味着删除先前附加到元素的事件处理程序:

  

从元素中删除以前附加的事件处理程序。

但您不能使用unbind删除添加了live的事件处理程序,因为live的工作方式不同(它将事件处理程序附加到文档根目录)。

这就是.die()的用途:

  

从元素中删除之前使用.live()附加的所有事件处理程序。

答案 2 :(得分:0)

我不明白你在这里取消绑定是什么意思..

$(".content_media").unbind("touchstart").live("touchstart",function(){....});

好吧,如果你有函数fn1,然后你就可以了,

$(".content_media").live("touchstart",fn1);

然后在某个时刻,您想要使用fn2而不是fn1

$(".content_media").live("touchstart",fn2);

然后你首先打电话取消绑定...删除fn1

$(".content_media").unbind("touchstart").live("touchstart",fn2);

但是如果你只想要fn1,那么你实际上不必使用unbind ......

修改

如果您这样做的原因是因为您正在调用此行,

$(".content_media").unbind("touchstart").live("touchstart",function(){....});

在每个ajax执行中......然后证明它是正确的...... 但是你做错了......

将它放在ajax执行之外并且没有解除绑定,那么你很高兴去......

$(".content_media").live("touchstart",function(){....});

答案 3 :(得分:0)

是的,您可以unbind()Doc使用live()Doc,如图所示。

此代码:

$(".content_media").unbind("touchstart").live("touchstart",function(){...

取消绑定通过jQuery touchstart 设置的所有bind()事件监听器,然后为当前和任何未来节点创建touchstart个侦听器content_media类。

请注意,要停止使用live()设置侦听器,您需要使用die()Doc

此外,在jQuery外部设置的侦听器并不总是受这些方法的影响。

答案 4 :(得分:0)

live()bind()之间的区别在于,实时事件会冒泡到文档,然后由jQuery处理并检查触发事件的元素。因此,如果您添加了更多与您已经调用live的选择器匹配的元素,它们将全部触发该事件。

然而,

Bind()是特定于元素的,您必须手动绑定所有新元素。从某种意义上说,如果你首先绑定一些元素并添加更多元素(即使匹配绑定选择器),你将不得不再次绑定它们(但要注意不要双重绑定原始元素)。

Unbind()bind()die()live()。您只能取消绑定使用bind()设置的事件,并且只能die()使用live()设置的事件。此外值得一提的是,与使用bind添加的事件不同,您无法阻止实时事件的传播。