Tengo un script jQuery simple en un complemento de WordPress que usa un contenedor jQuery como este:
$(document).ready(function(){
// jQuery code is in here
});
Llamo a este script desde el Panel de WordPress y lo estoy cargando DESPUÉS de que se haya cargado el marco jQuery.
Cuando reviso la página en Firebug constantemente recibo el mensaje de error:
TypeError: $ no es una función
$ (documento) .ready (función () {
¿Debería quizás envolver el script en esta función:
(function($){
// jQuery code is in here
})(jQuery);
He tenido este error varias veces y no estoy seguro de cómo manejarlo.
Cualquier ayuda sería muy apreciada.
$
en la consola y presiona enter, ¿qué ve?Respuestas:
Por defecto, cuando pone en cola jQuery en Wordpress, debe usar
jQuery
, y$
no se usa (esto es para compatibilidad con otras bibliotecas).Su solución de envolverlo
function
funcionará bien, o puede cargar jQuery de otra manera (pero eso probablemente no sea una buena idea en Wordpress).Si debe usar
document.ready
, puede pasar$
a la llamada de función:fuente
jQuery(function ($) { ...
, debe usarlo enjQuery
lugar de$
Esto debería solucionarlo:
En pocas palabras, WordPress ejecuta sus propios scripts antes de que pueda y liberan la
$
var para que no choque con otras bibliotecas. Esto tiene mucho sentido, ya que WordPress se usa para todo tipo de sitios web, aplicaciones y, por supuesto, blogs.De su documentación:
fuente
Esta solución me funcionó
Mueva su código dentro del cierre y use en
$
lugar dejQuery
Encontré la solución anterior en /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... después de buscar demasiado
fuente
Puedes evitar conflictos como este
fuente
Gracias a Ashwani Panwar y Cyssoo: https://stackoverflow.com/a/29341144/3010027
fuente
Prueba esto:
fuente
Tienes que pasar $ en la función ()
fuente
Reemplace el
$
signo conjQuery
este:fuente
Verifique sus referencias de jQuery. Es posible que esté haciendo referencia a ella más de una vez o que llame a su función demasiado pronto (antes de que se defina jQuery). Puede intentar como se menciona en mis comentarios y poner cualquier referencia de jQuery en la parte superior de su archivo (en la cabeza) y ver si eso ayuda.
Si usa la encapsulación de jQuery, no debería ayudar en este caso. Inténtalo porque creo que es más bonito y más obvio, pero si jQuery no está definido, obtendrás los mismos errores.
Al final ... jQuery no está definido actualmente.
fuente
script
referenciasJQuery
a la parte superior de tuindex.html
y probablemente funcionaráAdemás, encuentro la buena solución para usar el modo jQuery noConflict.
Encontré esta solución desde aquí. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
fuente
Utilizar
en vez de
o
Dentro de la función, $ apunta a jQuery como era de esperar
fuente
Lo que funcionó para mí. La primera biblioteca que se importa es la biblioteca de consulta y luego llama al método jQuery.noConflict ().
fuente
fuente
ahora use jq en lugar de jQuery
fuente
Te encuentras con este problema cuando el nombre de tu función y uno de los nombres de identificación en el archivo son los mismos. solo asegúrese de que todos sus nombres de identificación en el archivo sean únicos.
fuente
Puedes usar
o
fuente