$ no definido usando jQuery en WordPress

31

Sé que jQuery está cargado, porque puedo cambiar el $ para 'jQuery' y todo se comporta como se esperaba, pero esto será un script desordenado si no puedo solucionarlo

Este script:

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

Produce el error $ is not a function

Este script:

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

funciona bien.

    
pregunta Mild Fuzz 14.10.2010 - 17:27

3 respuestas

38

Puedes envolver tu javascript dentro de una función de auto-invocación, luego pasarle jQuery como argumento, usando $ como el nombre de la variable local. Por ejemplo:

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

debería funcionar según lo previsto.

Si recuerdo correctamente, la versión de jQuery provista por WP (la que obtienes si wp_enqueue_script('jquery') ) pone a jQuery en no conflicto inmediatamente, causando que $ no esté definido.

    
respondido por el nobody 14.10.2010 - 17:38
31

Ya casi llegas!

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

});

Tienes que pasar una referencia a jQuery como función $ a tu método o no funcionará. Si solo colocas $ dentro de la primera llamada function() como lo hice anteriormente, las cosas funcionarán bien.

    
respondido por el EAMann 14.10.2010 - 17:41
6

Pasar una función a jQuery es una abreviatura de $(document).ready(...) y luego colocar $ como primer parámetro de su devolución de llamada, creará un alias para jQuery dentro de esa devolución de llamada:

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

Puede ver la documentación de este aquí .

    
respondido por el rohmann 10.10.2013 - 01:18

Lea otras preguntas en las etiquetas