2010-07-14 3 views
2

Je un texte d'entrée qui sur keypress = entrer précèder une LI à une ULRetirer LI de UL sur clic en utilisant jQuery

Le LI contient un lien qui donne à l'utilisateur la possibilité de le retirer de l'UL

HTML (sur la charge de la page)

<ul id="conditionList"></ul> 

après que l'utilisateur ther entrées certaines conditions, l'UL se rempli avec LI

<li>condition<a href="#" class="clearitem">x</a></li> 

Cependant, dans mon jQuery

$('#conditionList a.clearitem').click(function(){ 
$(this).parent().remove(); 
}); 

ne fonctionnera pas! Est-ce parce qu'il ne reconnaît pas les nouveaux LI?

Répondre

6

Déc. Depuis 1.9. utilisez on au lieu de live.

Utilisation live() au lieu de click là parce que votre lien est généré dynamiquement:

$('#conditionList a.clearitem').live('click', function(){ 
    $(this).parent().remove(); 
}); 

.live()

Joindre un gestionnaire à l'événement pour tous les éléments qui correspondent au courant sélecteur, maintenant ou dans le futur.

Depracate depuis 1.9. utilisez on au lieu de live.

+0

Depracate depuis 1.9. utilisez 'on' au lieu de' live' – WebQube

2

Vous devez utiliser une liaison d'événement qui va reconnaître les éléments créés. Cela devrait faire cela:

$('#conditionList a.clearitem').live('click', function() { 
    $(this).parent().remove(); 
}); 
1

Peut-être les LI sont ajoutés au DOM après que le gestionnaire d'événement de clic a été déclaré? Si c'est le cas, vous pouvez vous intéresser à l'utilisation de live() au lieu de bind():

$('#conditionList a.clearitem').live('click', function(){ 
$(this).parent().remove(); 
}); 
Questions connexes