Obecnie opracowuję skrypt JavaScript, który działa na stronie administracyjnej. Przeczytałem o zmianach dokonanych w Drupal 7, a mianowicie o przejściu z document.ready()
własnej funkcji jQuery. Poniższy skrypt nie działa.
(function ($) {
console.log('hello');
$('#edit-apiusername').append('test');
})(jQuery);
console.log()
strzela i widzę wynik, ale prosty dodatek nie działa. Identyfikator pola jest poprawny.
Nie jestem pewien, czego tu brakuje, ale podejrzewam, że ma to związek ze sposobem, w jaki odwołuję się do obiektu. Patrząc na kod JavaScript wyświetleń 3, widzę, że zrobiono to w podobny sposób.
7
javascript
cyfrowy
źródło
źródło
document.ready
. To, co zgłaszasz, nie dotyczy Drupala 7.Odpowiedzi:
Myślę, że źle zrozumiałeś zmiany.
Kod JavaScript powinien być zawinięty,
(function ($) { ... })(jQuery);
aby umożliwić użycie$
jako skrótu dojQuery
. Ma to na celu umożliwienie jQuery przyjemnej gry z innymi bibliotekami . W tej funkcji nadal musisz czekać na załadowanie DOM, jeśli chcesz go zmienić. To właśnie robi zawijanie twojego kodujQuery.ready(function(){ ... })
.Ale zamiast używać
jQuery.ready(function(){ ... })
, powinieneś użyć zachowań, aby skrypt JavaScript Drupala wiedział, że Twój kod chce przetwarzać wszystko, co zostało dodane ( lub usunięte ) z DOM.źródło
Możesz również rozważyć aliasing całego obiektu jQuery do innej wybranej zmiennej, jak w:
Umieściłbyś to poza gotową instrukcją, aby pozostało dostępne poza enkapsulacją.
źródło