2009-08-06 200 views
0

使用此代碼,我需要刪除生成的新元素。它不工作。沒有JS錯誤出現在螢火蟲。刪除DOM元素錯誤

$('.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(); }); 
    }); 

回答

1

您需要使用與類中刪除錨點的.live事件。同樣這樣的背景下將因此錨點擊裏面的錨,你需要使用.parent()來淡出&除去李

$('.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

這使得EV未定義錯誤的無限循環,雖然沒有工作,一旦 – matthewb 2009-08-06 21:02:11

+0

他將還需要在「var stuff = $(this).text();」上使用parent()因爲這也是匹配A而不是LI – Mark 2009-08-06 21:02:56

+0

更新matthewb – redsquare 2009-08-06 21:05:18

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

這行是要刪除的鏈接,而不是LI標籤,因爲你正在使用$(本)