2010-11-24 41 views
4
 $(function(){ 
      var namecounter = 0 
      $("#getitem").click(function(){ 
       namecounter++ 
       var txtval = $("#txt").val(); 
       $('<tr><td><input type="button" name="txt'+ namecounter +'" value="remove" /><input type="text" id="txt'+ namecounter +'a" name="txt'+ namecounter +'a" value="'+txtval+'"/></td><td></td><td></td></tr>').appendTo('#pasok'); 
      }); 
      $(":button[name^='txt']").click(function(){ 
       var currentValue = $(this); 
       var target = $("#" + currentValue.attr("id") + "a"); 
       $(target).remove(); 
      }); 
     }); 

如何通过JQUERY删除创建的元素?如何通过JQUERY删除创建的元素?

回答

2

您的按钮不具有id属性,它有一个name属性(两者也有直接访问DOM属性),那么你可以这样做:

$(function(){ 
    var namecounter = 0 
    $("#getitem").click(function(){ 
     namecounter++ 
     var txtval = $("#txt").val(); 
     $('<tr><td><input type="button" name="txt'+ namecounter +'" value="remove" /><input type="text" id="txt'+ namecounter +'a" name="txt'+ namecounter +'a" value="'+txtval+'"/></td><td></td><td></td></tr>').appendTo('#pasok'); 
    }); 
    $("#pasok").delegate(":button[name^='txt']", "click", function(){ 
     $("#" + this.name + "a").remove(); 
    }); 
}); 

You can test it out here

还请注意使用.delegate(),因此它适用于您要添加的按钮,而不仅仅是在您的document.ready函数运行时出现的那些按钮。

+0

虽然你可能需要“a”之前的空格。 ````````````一个``` – 2010-11-24 09:41:36

1

你的目标变量已经是一个jquery对象。所以,你应该改变$(target).remove();target.remove();

+0

这是一个很好的优化,但遗憾的是,这不能成为他的代码破坏的原因。东西像`$($($($($('body')))))`仍然有效;这对性能来说真的很糟糕。 – 2010-11-24 09:43:32