给动态生成的链接动态的绑定事件,最典型的实现场景是在生成的表格行里点击链接删除这一行。
很多朋友直接就写a.setAttribute("href","javascript:deleteLine("+id+")"); 结果发现多行ID给整成一个了,这样做自然不行。
正确的做法是:
var link=document.createElement("a");
link.onclick=(function(id){ return function(){ deleteLine(id); } } )(item.id);
把上面写成一行就是:
link.onclick=(function(id){ return function(){deleteLine(id);}})(item.id);
这样做有些别扭,但只有这样做才能利用闭包在循环结束前保存当前值,如果不这样做,就只会记住最后一个item.id
END
参考资料: