Je développe actuellement un script JavaScript qui s'exécute sur une page d'administration. J'ai lu les modifications apportées à Drupal 7, à savoir le passage de document.ready()
sa propre fonction jQuery. Cependant, le script suivant ne fonctionne pas.
(function ($) {
console.log('hello');
$('#edit-apiusername').append('test');
})(jQuery);
console.log()
se déclenche et je peux voir la sortie, mais le simple ajout ne fonctionne pas. L'ID de champ est correct.
Je ne sais pas ce que je manque ici, mais je soupçonne que cela a à voir avec la façon dont je fais référence à l'objet. En regardant le code JavaScript de Views 3, je peux voir que cela se fait de manière similaire.
7
javascript
numérique
la source
la source
document.ready
. Ce que vousRéponses:
Je pense que vous avez mal compris les changements.
Le code JavaScript doit être encapsulé
(function ($) { ... })(jQuery);
pour permettre l'utilisation de$
comme raccourci versjQuery
. C'est pour permettre à jQuery de bien jouer avec d'autres bibliothèques . Dans cette fonction, vous devez toujours attendre que le DOM soit chargé si vous souhaitez le modifier. C'est ce que fait votre codejQuery.ready(function(){ ... })
.Mais au lieu d'utiliser
jQuery.ready(function(){ ... })
, vous devez utiliser des comportements pour laisser JavaScript de Drupal savoir que votre code veut traiter tout ce qui est ajouté ( ou supprimé ) du DOM.la source
Vous pouvez également envisager d'aliaser l'intégralité de l'objet jQuery vers une autre variable de votre choix, comme dans:
Vous mettriez cela en dehors de l'instruction ready pour le laisser accessible en dehors de l'encapsulation.
la source