web-gelistirme-sc.com

Yoldaki değişiklikler Drupal 7 JavaScript ve jQuery ile ilgileniyor

Şu anda bir yönetim sayfasında çalışan bir JavaScript komut dosyası geliştiriyorum. Drupal 7, yani document.ready() 'den kendi jQuery işlevine yapılan değişiklikleri okudum.Ancak, aşağıdaki komut dosyası çalışmıyor.

(function ($) {
  console.log('hello');
  $('#edit-apiusername').append('test');
})(jQuery);

console.log() ateş ediyor ve çıktıyı görebiliyorum, ancak basit ekleme çalışmıyor. Alan kimliği doğru.
Burada neyi özlediğimden emin değilim, ama nesneye referans verme şeklimizle ilgili olduğundan şüpheleniyorum. Views 3 JavaScript koduna baktığımda benzer şekilde yapıldığını görebiliyorum.

14
digital

Bence değişiklikleri yanlış anladın.

jQuery kısayolu olarak (function ($) { ... })(jQuery); Kullanımına izin vermek için JavaScript kodu $ İçine sarılmalıdır. Bu jQuery'nin diğer kütüphanelerle güzelce oynamasına izin vermek . Bu işlevde, değiştirmek isterseniz DOM'nin yüklenmesini beklemeniz gerekir. Kodunuzu jQuery.ready(function(){ ... }) içine saran da budur.

Ancak jQuery.ready(function(){ ... }) kullanmak yerine, Drupal JavaScript'in kodunuzun DOM'dan eklenen ( veya kaldırılmış ) her şeyi işlemek istediğini bilmesini sağlamak için davranışları kullanın kullanmalısınız. .

(function ($) {
  Drupal.behaviors.exampleModule = {
    attach: function(context, settings) {
      $(context).find('#edit-apiusername').append('test');
    }
  }
})(jQuery);
28
Pierre Buyle

Ayrıca, jQuery nesnesinin tamamını, seçtiğiniz gibi başka bir değişkenle diğer adla takmayı da düşünebilirsiniz:

$j = jQuery.noConflict();

Bunu, kapsülleme dışında erişime açık bırakmak için hazır ifadenin dışına koyarsınız.

1
Artur