簡體   English   中英

取消綁定展開JQuery Mobile折疊

[英]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。 在很多方面,有一個新的孩子在這個名字onbind要好得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM