在Jquery中绑定和解除绑定事件

时间:2013-10-20 12:19:34

标签: jquery-mobile

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

            });
        });

你能否告诉我为什么Unbind在Jquery mobile中很重要?请告诉我解除事件的最佳方法。我使用了以下方式来绑定和取消绑定事件。没关系

1 个答案:

答案 0 :(得分:0)

看一下这个例子:NO UNBIND USED

<强> CODE

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

如果从第1页转到第2页,然后单击名为Click me的按钮,您将看到警告“嗨!”显示得当。该活动在pagebeforeshow绑定,直到现在一切正常。

现在返回第1页,然后再次加载第2页,再次点击Click me按钮..您将看到警报显示2次!这是错的。这就是为什么在再次绑定事件之前需要unbind事件。

基本上,每次加载page2时,都会将新事件绑定到按钮..因此,如果您加载10次该页面,则会有10个绑定到该按钮的事件,一旦单击该按钮就会触发。

这是unbind的一个工作小提琴(取消绑定事件,我使用了off()):UNBIND USED

<强> CODE

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

查看here以了解我使用off()代替unbind()的原因,以及here如果您想了解off()如何运作

我希望这有助于澄清你的疑虑..