method - script jquery noconflict
TypeError: $ não é uma função ao chamar a função jQuery (11)
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
});
Eu estou chamando este script de dentro do Painel do WordPress e estou carregando depois que o framework jQuery foi carregado.
Quando eu verifico a página no Firebug, constantemente recebo a mensagem de erro:
TypeError: $ não é uma função
$ (document) .ready (function () {
Devo talvez envolver o script nesta função:
(function($){
// jQuery code is in here
})(jQuery);
Eu tive esse erro algumas vezes e não tenho certeza de como lidar com isso.
Qualquer ajuda seria muito apreciada.
Além disso, eu acho a boa solução para uso no modo jQuery noConflict.
(function($){
$(document).ready(function(){
// write code here
});
// or also you can write jquery code like this
jQuery(document).ready(function(){
// write code here
});
})(jQuery);
Eu encontrei esta solução daqui. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
Esta solução funcionou para mim
;(function($){
// your code
})(jQuery);
Mova seu código dentro do fechamento e use $
vez de jQuery
Eu encontrei a solução acima em https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... depois de procurar demais
O que funcionou para mim. A primeira biblioteca a importar é a biblioteca de consulta e, em seguida, chama o método jQuery.noConflict ().
<head>
<script type="text/javascript" src="jquery.min.js"/>
<script>
var jq = jQuery.noConflict();
jq(document).ready(function(){
//.... your code here
});
</script>
Por padrão quando você enfileira jQuery no Wordpress você deve usar jQuery
, e $
não é usado (isto é para compatibilidade com outras bibliotecas).
Sua solução de envolvê-lo na function
funcionará bem, ou você pode carregar o jQuery de outra maneira (mas 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:
jQuery(function ($) { ...
Usar
jQuery(document).
ao invés de
$(document).
ou
Dentro da função, $ aponta para jQuery como seria de esperar
(function ($) {
$(document).
}(jQuery));
Verifique as referências do seu jQuery. É possível que você faça referência a ele 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 jQuery no topo do seu arquivo (na cabeça) e ver se isso ajuda.
Se você usar o encapsulamento do jQuery, não deve ajudar neste caso. Por favor, tente porque eu 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á atualmente definido.
Você pode usar
jQuery(document).read(function(){ ... });
ou
(function ($) { ... }(jQuery));
Você se depara com esse problema quando o nome da sua função e um dos nomes de id no arquivo são os mesmos. Apenas certifique-se de que todos os seus nomes de identificação no arquivo sejam exclusivos.
substitua $
sign com jQuery
assim:
jQuery(function(){
//your code here
});
var $=jQuery.noConflict();
$(document).ready(function(){
// jQuery code is in here
});
Crédito para Ashwani Panwar e Cyssoo answer: https://.com/a/29341144/3010027
(function( $ ) { "use strict"; $(function() { //Your code here }); }(jQuery));