Saya telah membuat serangkaian acara jQuery khusus untuk digunakan dalam aplikasi web seluler. Mereka bekerja dengan baik dan telah diuji. Namun, saya mengalami masalah kecil yang sulit saya pahami.
Saya menggunakan .clone()
beberapa elemen dalam DOM, yang berisi tombol. Tombol tersebut memiliki beberapa kejadian khusus yang terikat padanya (kejadian terikat menggunakan .on()
), tetapi. Sayangnya, saat saya menggunakan jQuery .clone()
, binding tidak dipertahankan, dan saya harus menambahkannya lagi.
Adakah yang pernah mengalami hal ini sebelumnya, apakah seseorang mengetahui potensi yang ada? Saya pikir penggunaan .on()
itu seharusnya untuk menjaga pengikatan elemen yang ada sekarang, atau di masa depan?
javascript
jquery
BenM
sumber
sumber
.clone
; itu adalah logika delegasi acara jQuery dan berfungsi jika Anda meneruskan pemilih tambahan ke.on
.Jawaban:
Saya pikir Anda harus menggunakan kelebihan metode .clone () ini:
Berhati-hatilah karena
.on()
tidak benar-benar mengikat acara ke target tetapi ke elemen yang Anda delegasikan. Jadi jika Anda memiliki:Peristiwa sebenarnya terikat
#container
. Ketika sebuah klik pada.button
elemen terjadi, itu menggelembung ke#container
elemen Elemen yang memicu kejadian dievaluasi berdasarkan parameter pemilih.on()
dan jika cocok, pengendali kejadian dijalankan. Ini adalah cara kerja delegasi acara.Jika Anda menggandakan elemen #container, Anda harus melakukan kloning mendalam dengan peristiwa dan data agar binding dibuat
.on()
agar dapat dipertahankan.Ini tidak diperlukan jika Anda menggunakan
.on()
di induk dari#container
.sumber
.clone()
argumen yang diterima. FML. Terima kasih atas bantuan Anda..clone()
tidak mengkloning.data()
(keduanyadata-xxxx="somedata"
dan data di DOM) .. Ini juga memperbaikinya!click
acara untuk menambahkan div kloning baru.ready
tidak bekerjaAnda harus menyadari fakta bahwa fungsionalitas kloning yang dalam telah ditambahkan ke versi 1.5 jQuery.
Info lebih lanjut tentang topik ini:
http://api.jquery.com/clone/
sumber