删除DOM元素错误

时间:2009-08-06 20:53:54

标签: jquery

使用此代码,我需要删除生成的新元素。它不起作用。在firebug中没有出现JS错误。

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

2 个答案:

答案 0 :(得分:1)

您需要将.live事件用于具有类删除的锚点。此外,它的上下文将是锚点击内的锚点,因此你需要使用.parent()来fadeOut&amp;删除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(); 
    });
  });

答案 1 :(得分:0)

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

该行将删除A链接,而不是LI标记,因为您使用的是$(this)