Estoy usando jQuery v.1.7.1 donde aparentemente el método .live() está en desuso.jQuery .live() vs .on() método para agregar un evento de clic después de cargar html dinámico
El problema que estoy teniendo es que cuando se carga dinámicamente HTML en un elemento usando:
$('#parent').load("http://...");
Si trato y añadir un evento de clic después no se registra el evento utilizando cualquiera de estos métodos:
$('#parent').click(function() ...);
o
// according to documentation this should be used instead of .live()
$('#child').on('click', function() ...);
Cuál es la forma correcta para lograr este fu nctionality? Parece que solo funciona con .live() para mí, pero no debería usar ese método. Tenga en cuenta que #child es un elemento cargado dinámicamente.
Gracias.
¿Por qué dices * "supuestamente obsoleto" *? ¿No crees en los documentos? –
No está, según parece, obsoleto: está _ desaconsejado. Si miras el [jQuery doco for '.live()'] (http://api.jquery.com/live/) te dice cómo reescribir los usos existentes de '.live()' para usar '.delegate() 'o' .on() '(dependiendo de si está en la versión 1.7+ o no). Sin embargo, tenga en cuenta que si agrega un controlador con '.click()' "después" como usted menciona, es decir, después de cargar elementos dinámicamente, debería funcionar; el único problema es tratar de asignar con '.click() '_antes de cargar dinámicamente elementos. – nnnnnn
Cambié la fraseología a 'aparentemente' ya que eso es básicamente lo que quise decir. De todas formas, ahora entiendo que, dado que el evento .load() es asincrónico, el elemento #child solo podría reconocerse de manera confiable en el controlador de éxito, lo que tiene sentido. –