2012-03-12 10 views
9

Tengo un div con class="tags" con un hipervínculo predefinido.

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

Y tengo la función de eliminar ese hipervínculo si el usuario hace clic en él.

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

Y esto funciona con hipervínculos predefinidos. Si añado otros vínculos con la ayuda de jQuery (después de cargar la página)

$('.tags').append('<a href="#">newLink</a>'); 

Función para eliminar hipervínculo (el ratón) no se llamará a estos, añade enlaces. ¿Cómo resolver esto?

Respuesta

4

usted tiene que utilizar el live-función:

$(".tags a").live("click", function() { 
    // ... 
}); 

Debido a que usted está agregando los enlaces después de la carga inicial, el evento de clic estándar no se enganchan a los enlaces añadidos dinámicos.

+19

** Tenga en cuenta ** que ['live()'] (http://api.jquery.com/live) se ha depreciado desde 1.7. Es aconsejable usar ['on()'] (http://api.jquery.com/on) a partir de ahora. La llamada traducida sería '$ (documento) .on ('clic', '.tags a', función() {/ * foo * /});' – Matt

+0

Gracias. ¿Debo usarlo en todos mis clics/acciones similares o solo cuando realmente lo necesite? – svenkapudija

+1

Para el rendimiento, un vistazo a esta respuesta: http://stackoverflow.com/questions/6047193/liveclick-and-performance yo personalmente prefiero usar el clic-evento y sólo utilizar el evento en directo, si realmente lo necesito, ya que está claro que habrá elementos agregados dinámicos. – kufi

0

Su evento de clic solo se adjunta al elemento dom actual no al elemento futuro.Si desea agregar este evento a todos los elementos, incluya future, entonces debe usar el evento live en jquery. http://jsfiddle.net/6cGvt/

+5

** Nota ** que ['live()'] (http://api.jquery.com/live) se ha depreciado desde 1.7. Es aconsejable usar ['on()'] (http://api.jquery.com/on) a partir de ahora. La llamada traducida sería '$ (documento) .on ('clic', '.tags a', función() {/ * foo * /});' – Matt

+0

Sí, ... Para la última versión en jquery .usted tiene usar el método ON – sandeep