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

            });
        });

Jqueryモバイルでバインド解除が重要な理由を教えてください.イベントをバインド解除する最良の方法を教えてください.イベントをバインドおよびバインド解除するために次の方法を使用しました.大丈夫ですか

4

1 に答える 1

0

この例を見てください: NO UNBIND USED

コード

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

ページ 1 からページ 2 に移動して という名前のボタンをクリックするとClick me、「こんにちは!」というアラートが表示されます。きちんと表示されます。イベントは にバインドされましたpagebeforeshow。今まではすべて問題ありませんでした。

page1 に戻り、再度 page2 をロードし、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 に答える