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

            });
        });

你能告诉我为什么取消绑定在 Jquery mobile 中很重要吗?请告诉我取消绑定事件的最佳方法。我使用以下方式绑定和取消绑定事件。可以吗

4

1 回答 1

0

看看这个例子:NO UNBIND USED

代码

$("#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

代码

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

看看这里以了解我为什么使用off()而不是,如果你想看看它是如何工作的unbind(),也可以在这里off()

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

于 2013-10-20T12:38:47.857 回答