$ não definido usando jQuery no WordPress

31

Eu sei que o jQuery está carregado, porque eu posso mudar o $ para 'jQuery' e tudo se comporta como esperado, mas isso será um script confuso se eu não puder consertar isso

Este script:

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

Produz o erro $ 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 bem.

    
por Mild Fuzz 14.10.2010 / 17:27
fonte

3 respostas

38

Você pode colocar seu javascript dentro de uma função de invocação automática e passar jQuery como um argumento para ele, usando $ como o nome da variável local. Por exemplo:

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

deve funcionar como pretendido.

Se bem me lembro, a versão do jQuery fornecida pelo WP (aquela que você obtém se você wp_enqueue_script('jquery') ) coloca o jQuery em nenhum conflito imediatamente, fazendo com que $ seja indefinido.

    
por nobody 14.10.2010 / 17:38
fonte
31

Você está quase lá!

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

});

Você precisa passar uma referência ao jQuery como a função $ em seu método ou não funcionará. Se você acabou de colocar um $ dentro da primeira function() chamada como eu fiz acima, as coisas vão estar funcionando muito bem.

    
por EAMann 14.10.2010 / 17:41
fonte
6

Passar uma função para jQuery é uma forma abreviada de $(document).ready(...) e, em seguida, colocando $ como o primeiro parâmetro de seu retorno de chamada. Você cria um alias para jQuery dentro desse retorno de chamada:

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

Você pode ver a documentação para este aqui .

    
por rohmann 10.10.2013 / 01:18
fonte

Tags