2

我可以将 jQuery unbind() 与 live() 一起使用吗

例如

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

如果是,它究竟是什么意思?基本上我想了解 unbind 是什么意思

我有一个页面,我可以在其中绑定文档准备好的元素......在这之间有 AJAX 调用,它会重写相同的元素......现在我希望它们在任何时候都表现得相似......这就是我使用 live 的原因()

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

4

5 回答 5

0

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

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

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

这就是.die()

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

于 2011-07-27T09:52:36.190 回答
0

我不明白你在这里解除绑定有什么意义..

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

好吧,如果你有功能fn1,然后你有它,

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

然后在某一点上,你想不使用fn2as fn1like,

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

那么你最好先调用 unbind ......删除fn1

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

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

编辑

如果你这样做的原因是因为你打电话给这条线,

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

在每次 ajax 执行中......那么这就证明了它是合理的......但是你做错了......

只需将它放在 ajax 执行之外并且没有取消绑定,那么你就可以开始了......

$(".content_media").live("touchstart",function(){....});
于 2011-07-27T09:53:31.237 回答
0

是的,您可以将unbind()Doclive()Doc一起使用,如图所示。

这段代码:

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

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

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

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

于 2011-07-27T09:54:12.500 回答
0

取消绑定意味着从一组元素中删除事件处理程序。您只能删除一些事件处理程序

$(".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 上调用 .unbind() 也将取消绑定由 .live() 绑定的处理程序。例如,$(document).unbind('click'); 不仅会删除 $(document).bind('click', fn1),还会删除 $('a.foo').live('click', fn2)。

于 2011-07-27T09:50:27.213 回答
0

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

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

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

于 2011-07-27T09:54:41.677 回答