Eu tenho um script jQuery simples em um plugin do WordPress que está usando um wrapper jQuery como este:
$(document).ready(function(){
// jQuery code is in here
});
Estou chamando esse script de dentro do Painel do WordPress e o carregando APÓS o carregamento da estrutura do jQuery.
Ao verificar a página no Firebug, recebo constantemente a mensagem de erro:
TypeError: $ não é uma função
$ (document) .ready (function () {
Talvez eu devesse quebrar o script nesta função:
(function($){
// jQuery code is in here
})(jQuery);
Já tive esse erro algumas vezes e não sei como lidar com isso.
Qualquer ajuda seria muito apreciada.
$
no console e pressionar enter - o que você vê?Respostas:
Por padrão, quando você enfileira o jQuery no Wordpress, deve usar
jQuery
e$
não é usado (isto é para compatibilidade com outras bibliotecas).Sua solução de envolvê-lo
function
funcionará bem, ou você pode carregar o jQuery de outra maneira (mas isso provavelmente não é uma boa idéia no Wordpress).Se você deve usar
document.ready
, você pode realmente passar$
para a chamada de função:fonte
jQuery(function ($) { ...
, você deve usar emjQuery
vez de$
Isso deve corrigi-lo:
Simplificando, o WordPress executa seus próprios scripts antes que você possa, e eles lançam o
$
var para que não colidam com outras bibliotecas. Isso faz todo o sentido, pois o WordPress é usado para todos os tipos de sites, aplicativos e, claro, blogs.Da documentação deles:
fonte
Esta solução funcionou para mim
Mova seu código para dentro do fechamento e use em
$
vez dejQuery
Encontrei a solução acima em /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... depois de pesquisar demais
fonte
Você pode evitar conflitos como este
fonte
Agradecemos a Ashwani Panwar e Cyssoo resposta: https://stackoverflow.com/a/29341144/3010027
fonte
Tente o seguinte:
fonte
Você precisa passar $ in function ()
fonte
substitua o
$
sinaljQuery
por:fonte
Verifique suas referências do jQuery. É possível que você o faça referência mais de uma vez ou esteja chamando sua função muito cedo (antes que o jQuery seja definido). Você pode tentar como mencionado nos meus comentários e colocar qualquer referência do jQuery na parte superior do seu arquivo (na cabeça) e ver se isso ajuda.
Se você usar o encapsulamento do jQuery, não deverá ajudar nesse caso. Por favor, tente porque acho que é mais bonito e mais óbvio, mas se o jQuery não estiver definido, você obterá os mesmos erros.
No final ... jQuery não está definido atualmente.
fonte
script
cujas referênciasJQuery
ao topo do seuindex.html
e provavelmente vai funcionarAlém disso, acho a boa solução para usar o modo jQuery noConflict.
Encontrei esta solução a partir daqui. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
fonte
Usar
ao invés de
ou
Dentro da função, $ aponta para jQuery como você esperaria
fonte
O que funcionou para mim. A primeira biblioteca a importar é a biblioteca de consultas e, em seguida, chame o método jQuery.noConflict ().
fonte
fonte
agora use jq no lugar de jQuery
fonte
Você encontra esse problema quando o nome da sua função e um dos nomes de identificação no arquivo são iguais. apenas verifique se todos os seus nomes de identificação no arquivo são exclusivos.
fonte
Você pode usar
ou
fonte