2013-10-20 64 views
0
$(document).on("pagebeforeshow", function(event) { 
      $("#mybtn").on("click", function(e) { 
       $.mobile.showPageLoadingMsg(); 
       $.mobile.changePage("twitter.html", { 
        reloadPage: false, changeHash: true, 
       }); 
       $('#mybtn').unbind(''); 

      }); 
     }); 

u能告訴我爲什麼拆散是jQuery Mobile的重要,請告訴我最好的方式來解除綁定events.I使用下面綁定的方式和取消綁定events.Is該行綁定和取消綁定活動

回答

0

看看這個例子:NO UNBIND USED

CODE

$("#page2").on("pagebeforeshow", function(){ 
    $("#testBtn").on("click", function(){ 
     alert("Hi!"); 
    }); 
}); 

如果從第1頁到第2頁,然後單擊日e按鈕名稱爲Click me,您將看到警報「嗨!」正確顯示。這次活動被綁定在pagebeforeshow,直到現在一切正常。

現在返回到page1,然後再次加載page2,再次單擊Click me按鈕..您將看到該警報顯示2次!這是錯誤的。這就是爲什麼你需要unbind事件之前,你再次綁定它。

基本上每個加載第2頁的時候,你綁定一個新的事件的按鈕..所以,如果你加載網頁10次,你將有綁定到該按鈕10個事件,一旦點擊按鈕時,將觸發。

這裏的工作撥弄unbind(解除綁定的情況下,我用off()):UNBIND USED

CODE

$("#page2").on("pagebeforeshow", function(){ 
    $("#testBtn").off("click").on("click", function(){ 
     alert("Hi!"); 
    }); 
}); 

看看here明白爲什麼我用off()代替unbind() ,還有here如果你看到off()如何工作

我希望這有助於澄清你的疑惑..

+0

的$(document)。在( 'click.register', '.registerSubmitter',函數(E){// 做一些 }); 你對這種方法有什麼看法 http://stackoverflow.com/questions/10950443/how-to-properly-unbind-events-in-jquery-mobile-using-on-off-when-a-page-is -kept – user2889058