J'ai un simple script jQuery dans un plugin WordPress qui utilise un wrapper jQuery comme ceci:
$(document).ready(function(){
// jQuery code is in here
});
J'appelle ce script à partir du tableau de bord WordPress et le charge après le chargement du framework jQuery.
Lorsque je vérifie la page dans Firebug, je reçois constamment le message d'erreur:
TypeError: $ n'est pas une fonction
$ (document) .ready (function () {
Dois-je peut-être envelopper le script dans cette fonction:
(function($){
// jQuery code is in here
})(jQuery);
J'ai eu cette erreur plusieurs fois et je ne sais pas comment la gérer.
Toute aide serait grandement appréciée.
$
dans la console et appuyez sur Entrée - que voyez-vous?Réponses:
Par défaut, lorsque vous mettez en file d'attente jQuery dans Wordpress, vous devez utiliser
jQuery
et$
n'est pas utilisé (c'est pour la compatibilité avec d'autres bibliothèques).Votre solution pour l'envelopper
function
fonctionnera bien, ou vous pouvez charger jQuery d'une autre manière (mais ce n'est probablement pas une bonne idée dans Wordpress).Si vous devez utiliser
document.ready
, vous pouvez réellement passer$
à l'appel de fonction:la source
jQuery(function ($) { ...
, vous devez utiliser à lajQuery
place de$
Cela devrait le corriger:
En termes simples, WordPress exécute ses propres scripts avant que vous ne puissiez le faire et ils libèrent la
$
var pour ne pas entrer en collision avec d'autres bibliothèques. Cela est tout à fait logique, car WordPress est utilisé pour toutes sortes de sites Web, d'applications et, bien sûr, de blogs.De leur documentation:
la source
Cette solution a fonctionné pour moi
Déplacez votre code à l'intérieur de la fermeture et utilisez
$
au lieu dejQuery
J'ai trouvé la solution ci-dessus dans /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... après avoir trop cherché
la source
Vous pouvez éviter les conflits comme celui-ci
la source
Nous remercions Ashwani Panwar et Cyssoo pour leur réponse: https://stackoverflow.com/a/29341144/3010027
la source
Essaye ça:
la source
Vous devez passer $ dans la fonction ()
la source
remplacer le
$
signe parjQuery
comme ceci:la source
Vérifiez vos références jQuery. Il est possible que vous la référençiez plus d'une fois ou que vous appeliez votre fonction trop tôt (avant que jQuery ne soit défini). Vous pouvez essayer comme mentionné dans mes commentaires et mettre n'importe quelle référence jQuery en haut de votre fichier (dans la tête) et voir si cela aide.
Si vous utilisez l'encapsulation de jQuery, cela ne devrait pas aider dans ce cas. Veuillez l'essayer car je pense que c'est plus joli et plus évident, mais si jQuery n'est pas défini, vous obtiendrez les mêmes erreurs.
Au final ... jQuery n'est pas actuellement défini.
la source
script
référencesJQuery
vers le haut de votreindex.html
et cela fonctionnera probablementAussi, je trouve la bonne solution pour utiliser le mode jQuery noConflict.
J'ai trouvé cette solution d'ici. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
la source
Utilisation
au lieu de
ou
Dans la fonction, $ pointe vers jQuery comme vous vous en doutez
la source
Ce qui a fonctionné pour moi. La première bibliothèque à importer est la bibliothèque de requêtes, puis à droite appelez la méthode jQuery.noConflict ().
la source
la source
maintenant utiliser jq à la place de jQuery
la source
Vous rencontrez ce problème lorsque le nom de votre fonction et l'un des noms d'ID du fichier sont identiques. assurez-vous simplement que tous vos noms d'ID dans le fichier sont uniques.
la source
Vous pouvez utiliser
ou
la source