- J'utilise un site WordPress.
- J'inclus ce script dans l'en-tête.
Lorsque le script se charge, j'obtiens cette erreur:
TypeError: 'undefined' n'est pas une fonction (évaluation de '$ (document)')
Je n'ai aucune idée de ce qui la cause ou de ce que cela signifie même.
Dans Firebug, j'obtiens ceci:
$ n'est pas une fonction
Net
onglet de Firebug (assurez-vous que jQuery est effectivement chargé).Réponses:
Wordpress utilise jQuery en mode noConflict par défaut. Vous devez le référencer en utilisant
jQuery
comme nom de variable, pas$
, par exemple utiliserau lieu de
Vous pouvez facilement encapsuler cela dans une fonction auto-exécutable pour faire
$
à nouveau référence à jQuery (et éviter de polluer également l'espace de noms global), par exemplela source
jQuery(document)
au lieu de l'$(document)
endroit où vous le souhaitez. Si vous voulez utiliser à la$
place, alors le script ci-dessus crée simplement une fonction qui prend un argument$
puis l'exécute en passantjQuery
; en bref, dans la fonction,$
pointe vers jQuery comme on peut s'y attendre.$(document).ready(function() { // code });
à la place de votre$(document);
... qui a fonctionné comme un charme.Utilisez jQuery
noConflict
. Cela a fait des merveilles pour moiAutrement dit, en supposant que vous ayez inclus jQuery dans votre HTML
la source
Utilisez ceci:
la source
Essayez cet extrait:
Cela a fonctionné pour moi, peut-être que cela vous aidera aussi.
la source
J'ai eu ce problème uniquement sur Chrome.
J'ai essayé d'ajouter
juste avant d'appeler
Ça a marché.
Merci beaucoup
la source
Vérifiez également l'inclusion de jQuery, suivi de certains composants / autres bibliothèques (comme jQuery UI), puis de nouveau par erreur de jQuery - cela redéfinira jQuery et supprimera les assistants de composants (comme .datepicker) de l'instance.
la source
Placez votre code js à l'intérieur de la fermeture ci-dessus, cela devrait résoudre le problème.
la source
J'utiliserais ça
la source
J'ai également été confronté à de tels problèmes à plusieurs reprises dans le domaine du développement Web. En fait, ce n'est pas un conflit JS, lorsque nous chargeons un site Web html sur le navigateur, nous ne sommes pas confrontés à une telle erreur, mais lorsque nous chargeons ce type de site Web via localhost, nous sommes confrontés à un tel problème. C'est à cause de localhost. Lorsque nous chargeons des scripts via l'hôte local, il analyse le script et rend la sortie. Mais quand nous n'avons pas utilisé localhost. Il scanne simplement la sortie. Exemple, lorsque nous écrivons du code php à côté de l'hôte local et que nous l'exécutons sans hôte, nous obtenons une erreur. Mais si le code est correct et est exécuté via l'hôte, nous obtenons la sortie réelle, et lorsque nous utilisons l'élément inspect, nous obtenons le code de sortie au format HTMl mais pas au format PHP, c'est à cause du rendu du code.
C'est une erreur de rendu. Donc, pour corriger ces erreurs de code jquery, l'une des solutions peut être d'utiliser cette méthode.
Ce que fait ce code est d'enregistrer '$' comme variable de la fonction en appliquant jquery. Sinon, par défaut, le fichier .js est uniquement lu en javascript.
la source
J'ai rencontré ce problème également lors de l'inclusion de jQuery dans l'en-tête de ma page, ne réalisant pas que l'hôte l'incluait déjà automatiquement dans la page. Alors chargez votre page en direct et vérifiez la source pour voir si jQuery est lié.
la source
Deux choses:
la source
envelopper tout le script entre ceci ...
De nombreuses bibliothèques JavaScript utilisent $ comme fonction ou nom de variable, tout comme le fait jQuery. Dans le cas de jQuery, $ est juste un alias pour jQuery, donc toutes les fonctionnalités sont disponibles sans utiliser $. Si vous devez utiliser une autre bibliothèque JavaScript à côté de jQuery, renvoyez le contrôle de $ à l'autre bibliothèque avec un appel à $ .noConflict () . Les anciennes références de $ sont enregistrées lors de l'initialisation de jQuery; noConflict () les restaure simplement.
la source
Vous pouvez utiliser à la fois jQuery et $ dans l'extrait de code ci-dessous. ça a marché pour moi
la source
Vous pouvez passer $ dans la fonction ()
ou vous pouvez remplacer
$(document);
par cecijQuery(document);
ou vous pouvez utiliser
jQuery.noConflict()
la source