[英]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.