Saya membaca tentang perilaku Drupal hari ini, dan saya mencoba menulis kode berikut.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
- Apakah
Drupal.behaviors.mymodule
namespace itu? - Apa parameter konteks dan pengaturan yang diteruskan ke perilaku Drupal?
- Apakah ini setara dengan
document.ready()
? - Bisakah saya melampirkan sejumlah fungsi?
- Bisakah saya mendefinisikan fungsi JavaScript yang akan dipanggil di suatu tempat?
7
javascript
Peretas
sumber
sumber
Jawaban:
Singkatnya, kelebihan Behaviors over
document.ready()
adalah bahwa mereka secara otomatis diterapkan kembali ke konten apa pun yang dimuat melalui AJAX.mymodule
adalah namespace Anda, yang harus unik.context
adalah bagian dari halaman yang berlaku, misalnya bagian dari formulir yang telah diperbarui dengan AJAX. Anda dapat melampirkan banyak perilaku, tetapi saya pikir Anda perlu menggunakan nama unik (modul saya) untuk masing-masing perilaku tersebut.Lihat sumber daya berikut untuk informasi lebih lanjut:
sumber
Dengan kata mudah,
Drupal.behaviors
adalah cara yang lebih baik untuk diterapkanjQuery.ready
Berbeda dengan
jQuery.ready
yang hanya berjalan satu kali ketika DOM siap,Drupal.behaviors
dapat dijalankan beberapa kali selama eksekusi halaman.Misalnya, dalam tampilan gulir tak terbatas, lebih banyak elemen akan dimuat ketika pengguna mengklik tombol lebih banyak, karenanya, DOM akan berubah setelah pemuatan awal.
Bagaimana jika kita ingin menambahkan kelas ke elemen yang baru ditambahkan? Di sini Perilaku Drupal berguna.
Drupal akan memanggil perilaku terlampir saat DOM dimuat dan juga ketika diubah oleh Ajax, melewati dua argumen
konteks dan pengaturan
Pertama kali Drupal.attachBehaviors () dipanggil, variabel konteks berisi objek dokumen yang mewakili DOM, tetapi untuk konteks panggilan lainnya akan menampung bagian HTML yang terpengaruh.
pengaturan berisi informasi yang diteruskan ke JavaScript melalui PHP, ini mirip dengan mengaksesnya melalui Drupal.settings.
Selanjutnya, modul dapat memanggil Drupal.attachBehaviors () juga.
sumber