texto - change text jquery
TypeError: $(…).on no es una función (5)
Estoy usando jQuery litebox . Después de agregar archivos JS y CSS recibí este error TypeError:
$(...).on is not a function at this line in js file
"return $(''body'').on(''click'',
''a[rel^=lightbox], area[rel^=lightbox]'', function(e) {"
¿Alguien puede ayudarme a entender el problema aquí?
Estoy haciendo esta implementación en CakePHP 1.3.
El problema puede ser si está utilizando una versión anterior de jQuery. Porque las versiones anteriores de jQuery tienen el método ''en vivo'' en lugar de ''activado''
Este problema está resuelto, en mi caso, al encapsular mi jQuery en:
(function($) {
//my jquery
})(jQuery);
La causa habitual de esto es que también está utilizando Prototype, MooTools o alguna otra biblioteca que utiliza el símbolo $
, e incluye esa biblioteca después de jQuery, y esa biblioteca está "ganando" (tomando $
por sí mismo). Por lo tanto, el valor de retorno de $
no es una instancia de jQuery, por lo que no tiene métodos jQuery (como on
).
Puede usar jQuery con esas otras bibliotecas, pero si lo hace, debe usar el símbolo jQuery
lugar de su alias $
, por ejemplo:
jQuery(''body'').on(...);
Y generalmente es mejor si agrega esto inmediatamente después de la etiqueta de script
incluida jQuery, antes de la que incluye la otra biblioteca:
<script>jQuery.noConflict();</script>
... aunque no es obligatorio si carga la otra biblioteca después de jQuery (si carga la otra biblioteca primero).
Sin embargo, el uso de múltiples bibliotecas de manipulación de DOM de funciones completas en la misma página no es ideal solo en términos de peso de la página. Por lo tanto, si puede quedarse con solo Prototype / MooTools / lo que sea o solo jQuery, eso es generalmente mejor.
Probé la solución de Oskar (y muchas otras), pero para mí finalmente solo funcionó con:
jQuery(function($){
// Your jQuery code here, using the $
});
Consulte: https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
Si está utilizando la versión anterior de jQuery (<1.7), puede usar "bind" en lugar de "on". Esto solo funcionará en caso de que esté utilizando una versión anterior, ya que a partir de jQuery 3.0, "bind" ha quedado en desuso.