Saat ini saya sedang mengembangkan skrip JavaScript yang berjalan pada halaman administrasi. Saya membaca tentang perubahan yang dibuat di Drupal 7, yaitu pindah dari document.ready()
ke fungsi jQuery sendiri. Namun, skrip berikut tidak berfungsi.
(function ($) {
console.log('hello');
$('#edit-apiusername').append('test');
})(jQuery);
console.log()
menyala dan saya bisa melihat hasilnya, tetapi append sederhana tidak berfungsi. ID bidang sudah benar.
Saya tidak yakin apa yang saya lewatkan di sini, tetapi saya menduga itu ada hubungannya dengan cara saya merujuk objek. Melihat kode JavaScript Views 3, saya bisa melihatnya dilakukan dengan cara yang sama.
7
javascript
digital
sumber
sumber
document.ready
. Apa yang Anda laporkan tidak spesifik untuk Drupal 7.Jawaban:
Saya pikir Anda salah memahami perubahan.
Kode JavaScript harus dibungkus
(function ($) { ... })(jQuery);
untuk memungkinkan penggunaan$
sebagai pintasanjQuery
. Ini untuk memungkinkan jQuery bermain dengan baik dengan perpustakaan lain . Dalam fungsi ini, Anda masih harus menunggu DOM dimuat jika Anda ingin mengubahnya. Itulah yang membungkus kodejQuery.ready(function(){ ... })
Anda.Tetapi alih-alih menggunakan
jQuery.ready(function(){ ... })
, Anda harus menggunakan perilaku untuk membuat JavaScript Drupal tahu bahwa kode Anda ingin memproses apa pun yang ditambahkan ( atau dihapus ) dari DOM.sumber
Anda juga dapat mempertimbangkan aliasing seluruh objek jQuery ke variabel lain pilihan Anda, seperti pada:
Anda akan menempatkan ini di luar pernyataan siap untuk membuatnya dapat diakses di luar enkapsulasi.
sumber