2013-10-20 146 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