2009-08-06 7 views
0

En utilisant ce code, je dois supprimer le nouvel élément généré. Ça ne marche pas. Aucune erreur JS n'apparaît dans firebug.Supprimer l'élément DOM Erreur

$('.popular-list li a').live("click",function() //this will apply to all anchor tags 
      { 
        var stuff = $(this).text(); 
          var hasDuplicate = false; 

      $('#favoritesdrinks li').each(function(){ 
      if ($(this).text() === stuff){ 
       hasDuplicate = true; 
       return false; 
      } 
     }); 

     if (hasDuplicate) { 
      alert("Already Added") } 
     else {   
      $('#favoritesdrinks').append('<li>'+stuff+' --- <a href="javascript:;" class="remove">Remove Item </a> </li>'); 
     } 
    }); 

Removal: 

    $("a.remove").click(function() { 
    $(this).fadeOut(500, function() { $(this).remove(); }); 
    }); 

Répondre

1

Vous devez utiliser l'événement .live pour les points d'ancrage avec remove classe . De plus, le contexte de ce sera l'ancre à l'intérieur du à fadeOut & retirer le li

$('.popular-list li a').live("click",function() { 
    var stuff = $(this).text(); 
    var hasDuplicate = false; 

    $('#favoritesdrinks li').each(function(){ 
     if ($(this).text() === stuff){ 
      hasDuplicate = true; 
      return false; 
     } 
    }); 

    if (hasDuplicate) { 
     alert("Already Added") } 
    else {   
     $('#favoritesdrinks').append('<li>'+stuff+' --- <a href="#" class="remove">Remove Item </a> </li>'); 
    } 

    }); 

    $("a.remove").live('click', function(ev) { 
    ev.preventDefault(); 
    $(this).parent().fadeOut(500, function(ev) { 
     $(this).remove(); 
    }); 
    }); 
+0

Cela provoque une boucle infinie d'erreurs non définies ev bien ne fonctionne une fois – matthewb

+0

clic d'ancrage donc vous devez utiliser .parent() Il sera aussi besoin d'utiliser parent() sur "var stuff = $ (this) .text();" parce que cela correspond également A et non le LI – Mark

+0

mis à jour matthewb – redsquare

0
$("a.remove").click(function() { $(this).fadeOut(500, function() { $(this).remove(); }); }); 

Cette ligne va démonter le lien, pas l'étiquette LI parce que vous utilisez $ (this)