以下代码
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style> #div1{width:300px;height:400px;border:solid black 1px;} </style> <script src="jquery-3.2.1.min.js"></script> <script> $(document).ready(function(){ var i = 2; $("#btn").click(function(){ var idin = "text"+i; var btid = "btn"+i; $("#div1").append("<br/><a><input type='text' value='11111' id = "+idin+"></input>"+"<button id="+btid+">X</button><br/></a>"); i++; }); $("a").click(function(){ $(this).remove(); }); }); </script> </head> <body> <button id="btn">插入一个文本框</button> <hr/> <div id="div1"> <a><input type="text" value="11111" id="text1"></input><button id='btn1'>X</button><br/></a> </div> </body> </html>
这段代码能成功添加项,也能删除原先存在的第一项。但是不能成功删除新添加的项。因为新添加的项没有绑定相应点击移除事件。需要把这个事件委托给一直存在的parent来实现就可以了,改写并测试一下:
function x(){ var i = 2; $("#btn").click(function(){ var idin = "text"+i; var btid = "btn"+i; $("#div1").append("<br/><a><input type='text' value='11111' id = "+idin+"></input>"+"<button id="+btid+">X</button><br/></a>"); i++; }); $("#div1").click(function(e){ var tag = e.target; if(tag.tagName.toLowerCase()=="button"){$(tag).parent("a").remove();} }); }
这个类似于下面这篇博文:写的非常好。
http://www.cnblogs.com/yewenxiang/p/6171411.html