web-dev-qa-db-fra.com

TypeError: 'undefined' n'est pas une fonction (évaluation '$ (document)')

  1. J'utilise un site WordPress.
  2. 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 '$ (document)')

Je n'ai aucune idée de ce qui le cause ou de ce que cela signifie même.

Dans firebug, j'obtiens ceci:

$ n'est pas une fonction

137
dcolumbus

Wordpress utilise jQuery en mode noConflict par défaut. Vous devez le référencer en utilisant jQuery comme nom de variable, et non $, par ex. utilisation

jQuery(document);

au lieu de

$(document);

Vous pouvez facilement envelopper cette fonction dans une fonction à exécution automatique de sorte que $ renvoie de nouveau à jQuery (et évite également de polluer l'espace de noms global), par exemple.

(function ($) {
   $(document);
}(jQuery));
239
El Yobo

Utilisez jQuery noConflict . Cela a fait des merveilles pour moi

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

C’est-à-dire que si jQuery est inclus dans votre code HTML

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
24
Leno Britto

Utilisez ceci:

var $ =jQuery.noConflict();
15
Suman Biswas

J'ai eu ce problème uniquement sur Chrome.

J'ai essayé d'ajouter

var $ =jQuery.noConflict();

juste avant d'appeler

$(document).ready(function () {

Ça a marché.

Merci beaucoup

11
Le_Dhul

Essayez cet extrait:

jQuery(function($) {
  // Your code.
})

Cela a fonctionné pour moi, peut-être que cela vous aidera aussi.

11
Gurpreet Dhanoa

Vérifiez également l’inclusion de jQuery, suivie de certains composants/autres bibliothèques (comme jQuery UI), puis accidentellement de nouveau incluant jQuery - cela redéfinira jQuery et supprimera les aides de composants (comme .datepicker) de l’instance.

6
agrath
 ;(function($){
        // your code
    })(jQuery);

Placez votre code js dans la fermeture ci-dessus, cela devrait résoudre le problème.

4
Bikram Shrestha

Je voudrais utiliser ceci

(function ($) {
   $(document);
}(jQuery));
4
JoT

J'ai également été confronté à de tels problèmes à de nombreuses reprises dans le développement de sites Web. En fait, ce n’est pas un conflit JS. Lorsque nous chargeons le 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 localhost, celui-ci est analysé et restitué. Mais quand nous n'avons pas utilisé localhost. Il suffit de numériser la sortie. Par exemple, lorsque nous écrivons du code php avec l'hôte local et que nous courons sans hôte, nous obtenons une erreur. Mais si le code est correct et est exécuté via Host, nous obtenons la sortie réelle. Lorsque nous utilisons l'élément inspect, nous obtenons le code de sortie au format HTMl, mais pas au format PHP, en raison de la restitution du code.

C'est une erreur de rendu. Donc, pour corriger ces erreurs de code jquery, l’une des solutions peut utiliser cette méthode.

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

Ce code ne fait qu'enregistrer '$' en tant que variable de la fonction en appliquant jquery. Sinon, le fichier .js est uniquement lu en javascript.

2
Rajan Lama

Vous pouvez passer $ in function ()

jQuery(document).ready(function($){

// jQuery code is in here

});

ou vous pouvez remplacer $(document); avec ceci jQuery(document);

ou vous pouvez utiliser jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});
1
Ganesh

Deux choses:

  1. Assurez-vous d’avoir ajouté la bibliothèque jQuery, avant votre $ (document).
  2. Puis changez simplement tous les "$" avec: jQuery, comme dans les commentaires précédents.

envelopper tout le script entre cela ...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

De nombreuses bibliothèques JavaScript utilisent $ comme une fonction ou un nom de variable, tout comme 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, restituez 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.

1
Jitendra Damor

Vous pouvez utiliser à la fois jQuery et $ dans l'extrait ci-dessous. ça a fonctionné pour moi

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});
1
Kalpesh Prajapati

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é.

1
FrostyL