[英]Unbind expand JQuery Mobile Collapse
我正在使用JQuery Mobile Accordion列表
我正在使用(在我的pageshow
侦听器中)监听其中一项的扩展
$("#myListSection").bind("expand",function(){})
在我的应用中,页面来回切换。 我有一个问题,其中会创建多个“扩展”订阅,因此当我再次切换到列表时,扩展一个部分时会调用多个函数。 因此,我想在离开页面时使用unbind
方法破坏监听器。
我遇到的问题是当我取消绑定该事件然后尝试重新绑定时。
$("#myListSection").unbind("expand")
$("#myListSection").bind("expand")
基本上,现在只触发了一个expand事件(这很好),但是list部分并没有扩展...我认为取消绑定的破坏不仅仅是我的听众。
JS Fiddle示例: http : //jsfiddle.net/6txWy/1658/
简单。 将要执行的功能设置为单独的功能,如下所示:
function expand() {..}
function collapse() {..}
然后,您的事件处理程序必须是这样的:
$('#my-collaspible').bind({
'expand': expand,
'collapse': collapse
});
我更喜欢传递这样的函数,因为它使我的代码清晰易懂。 然后 ,进入主要部分。 而不是仅仅使用unbind
,并删除与可收缩相关联的所有功能,使用unbind
与你以前绑定它喜欢这个功能:
$(this).unbind('expand', expand);
第二个expand
是您传递的anon函数。 稍后,在需要时, collapsible
可以这样绑定回expand()
。 (再次)
$(this).bind('expand', expand);
(假设this
是可折叠的)
演示: http : //jsfiddle.net/hungerpain/6txWy/1661/
附加功能-为什么在使用unbind
时jQuery删除与可折叠相关的所有事件数据 :可折叠不是本地的吗? 它们是由jQM通过使用toggleClass来构造的,它本身是一个函数,并附加为click
事件处理程序。 (它的工作方式并不完全,但是您可以理解要点)因此,仅通过调用unbind
破坏一切 。
希望这可以帮助 :)
PS请考虑使用最新版本的jQuery&jQuery mobile。 在很多方面,有一个新的孩子在这个名字on
比bind
要好得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.