我可以在live()
中使用jQuery unbind()吗?e.g。
$(".content_media").unbind("touchstart").live("touchstart",function(){....});
如果是,那究竟是什么意思?基本上我想了解一个解开的意思是什么
我有一个页面,我在文件准备好的时候绑定元素......在两者之间有AJAX callls哪种重写相同的元素......现在我希望它们在任何时候都表现得相似......这就是为什么我使用了live()
如果在这里有一些例外,其中live()绑定不起作用,请纠正我。
答案 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添加的事件不同,您无法阻止实时事件的传播。