$("div").click(function(){
$("body").append('<div id="div" style="width:400px; height:400px; background:#000"></div>');
});
$("#div").click(function(){
$(this).hide();
});
里面的#div是div点击动态生成的,属于未来的元素,这样写,JS代码在加载的时候$("#div")部分的代码识别不到,所以作废了;
解决方式请看下面
$("body").delegate("div", "click", function(){
$("body").append('<div id="div" style="width:400px; height:400px; background:#000"></div>');
$("#div").click(function(){
$(this).remove();
});
});
使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
PS还可以用on()方法
on('event','元素',function(){})
关键词:delegate(),on(),事件冒泡,其实就是在window上加一个事件,再判断是不是这个元素