2010-08-02 17 views
10

¿Cómo puedo vincular eventos a elementos html que no existen en el momento de cargar el script?Eventos de vinculación a elementos DOM aún no creados (jquery)

Una parte de mi script agrega estos para el DOM:

<a class="btn-remove-item" href="">link</a> 

El problema es que no puedo acaba de hacer:

$(document).ready(function(){ 

    $(".btn-remove-item").click(function(){ 
     this.parentNode.removeChild(this); 
    }); 
}); 

.. creo que debido a que el elemento DOM no es allí cuando la página se carga por primera vez.

¿Cómo debo vincular el evento a myClass?

Respuesta

22

jQuery.live() ya no se utiliza. Aquí está la respuesta aceptada utilizando jQuery.on() lugar:

$(document).on('click', '#btn-remove-item', function() { 
    this.parentNode.removeChild(this); 
}); 
+0

actualizado para darle la respuesta desde su actualización – babonk

+0

Gracias, gracias a esto, puedo enlazar eventos en mis elementos generados Angulares – Dorian

1

jQuery.live() es lo que necesita.

$(document).ready(function(){ 

    $("a.myClass").live('click', function() { 
     this.parentNode.removeChild(this); 
    }); 
}); 

Pruébelo: http://jsfiddle.net/mwR8g/

+1

'live()' está en desuso ahora. Use 'on()'. Ver esta respuesta: http://stackoverflow.com/a/8191450/1738090 – w3bshark

3

El jQuery live() function hace esto:

$("#btn-remove-item").live('click', function() { 
    this.parentNode.removeChild(this); 
}); 
+1

en vivo está en desuso, ¿cómo puedo lograrlo a través de 'on'? –

+2

puede usar 'on', simplemente seleccione 'document' y use el argumento selector de 'on' para obtener el elemento correcto. p.ej. '$ (document) .on ('click', '#someThingCreatedLater', function (event) {... do stuff ...});' – tehfoo

-1
$(document).ready(function(){ 
    $(".btn-remove-item").live('click', function() { 
     this.parentNode.removeChild(this); 
    }); 
}); 

usted es necesidad de usar vivo.

Cuestiones relacionadas