Mengikat dan Melepaskan Acara di Jquery

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

            });
        });

Bisakah Anda memberi tahu saya mengapa Unbind penting di ponsel Jquery dan Tolong beri tahu saya cara terbaik untuk melepas ikatan acara. Saya menggunakan cara berikut untuk mengikat dan melepaskan ikatan acara. Bolehkah


person user2889058    schedule 20.10.2013    source sumber


Jawaban (1)


Lihat contoh ini: TIDAK ADA UNBIND YANG DIGUNAKAN

KODE

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

Jika Anda berpindah dari halaman 1 ke halaman 2, lalu mengklik tombol bernama Click me Anda akan melihat peringatan "Hai!" ditampilkan dengan benar. Acaranya diikat pada pagebeforeshow, sampai sekarang semuanya baik-baik saja.

Sekarang kembali ke halaman1, lalu muat lagi halaman2, klik lagi tombol Click me.. Anda akan melihat bahwa peringatan ditampilkan 2 kali! dan ini SALAH. Itu sebabnya Anda perlu unbind acara tersebut SEBELUM Anda mengikatnya lagi.

Pada dasarnya, setiap kali Anda memuat halaman2, Anda mengikat peristiwa baru ke tombol.. jadi, jika Anda memuat 10 kali halaman tersebut, Anda akan memiliki 10 peristiwa yang diikat ke tombol, yang akan diaktifkan setelah tombol diklik.

Inilah biola yang berfungsi dengan unbind (untuk melepaskan ikatan acara, saya menggunakan off()): UNBIND USED

KODE

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

lihat di sini untuk memahami mengapa saya menggunakan off() dan bukan unbind(), dan juga di sini jika Anda ingin melihat cara kerja off()

Saya harap ini membantu memperjelas keraguan Anda..

person BeNdErR    schedule 20.10.2013
comment
$(document).on('click.register', '.registerSubmitter', function(e) { // melakukan sesuatu }); apa pendapat Anda tentang metode ini stackoverflow.com/questions/10950443/ - person user2889058; 20.10.2013