$ non défini à l'aide de jQuery dans WordPress

31

Je sais que jQuery est chargé, car je peux désactiver le $ pour 'jQuery' et tout se comporte comme prévu, mais ce sera un script compliqué si je ne parviens pas à résoudre ce problème

Ce script:

jQuery(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })
});

Produit l'erreur $ is not a function

Ce script:

jQuery(document).ready(function(){
    jQuery("ul.vimeo_desc_feed li a").click(function(){
        alert(jQuery(this).attr('href'));
        return false;
    })
});

fonctionne bien.

    
posée Mild Fuzz 14.10.2010 - 17:27

3 réponses

38

Vous pouvez envelopper votre javascript dans une fonction à invocation automatique, puis passer jQuery en argument, en utilisant $ comme nom de variable locale. Par exemple:

(function($) {
  $(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
      alert($(this).attr('href'));
      return false;
    })
 });
}(jQuery));

devrait fonctionner comme prévu.

Si je me souviens bien de la version de jQuery fournie par WP (celle que vous obtiendrez si wp_enqueue_script('jquery') ), jQuery n'était pas en conflit immédiatement, ce qui ferait que $ serait indéfini.

    
réponse donnée nobody 14.10.2010 - 17:38
31

Vous y êtes presque!

jQuery(document).ready(function($){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })

});

Vous devez passer une référence à jQuery en tant que fonction $ dans votre méthode, sinon cela ne fonctionnera pas. Si vous placez simplement un $ dans le premier appel function() comme je l’ai fait ci-dessus, les choses fonctionneront parfaitement.

    
réponse donnée EAMann 14.10.2010 - 17:41
6

Transmettre une fonction à jQuery est un raccourci pour $(document).ready(...) , puis en plaçant $ en tant que premier paramètre de votre rappel, vous créez un alias pour jQuery dans ce rappel:

jQuery(function($) {
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    });
});

Vous pouvez voir la documentation de ce ici .

    
réponse donnée rohmann 10.10.2013 - 01:18

Lire d'autres questions sur les étiquettes