关于动态元素中循环中的事件
On events in loop in dynamic elements
我需要将事件设置为"动态"元素,如var X = $('HTML CODE HERE')
,但当我将事件设置到最后一个元素时,所有其他元素都会获得最后一个事件。
此处的示例:http://jsfiddle.net/QmxX4/6/
$(document).ready(function() {
var ulItem = $('.lst');
for (var x=0; x<5; x++) {
var newItemElement = $('<li style="border:solid 1px blue;width:200px;height:40px;"></li>');
ulItem.append(newItemElement);
var generator = Math.random();
newItemElement.on('click', function() {
console.log(generator);
});
}
});
所有元素都是不同的,我直接将事件附加在元素中,我尝试在添加事件之前和之后将事件附加到元素中,但不起作用,所有元素都得到最后一个事件。
如果您在<li></li>
中单击,则会在最后一个事件中生成代码,但"理论上"所有元素都附加了不同的事件。。
但是,如果我在将所有项目附加到<ul></ul>
之后进行其他循环附加元素,如下所示:
$.each($(ulItem).children('li'), function(i, item) {
console.log($(this));
var generator = Math.random();
$(this).on('click', function() {
console.log(generator);
});
});
工作。。。问题出在哪里?
在第一个循环中,generator
变量属于ready
回调函数,内部日志函数都共享它。
在第二个循环中,generator
变量属于each
回调函数,该函数对每个项调用一次,因此日志函数都会看到不同的变量。
相关文章:
- 如何在for循环中添加事件侦听器
- 注册OpenLayers事件时,即使使用匿名函数或绑定,JavaScript关闭也会触发循环内的所有内容
- 在循环中附加事件处理程序时出现浏览器性能问题
- 如何使用for循环添加所有按钮'单击事件
- 事件循环、回调队列和 Javascript 的单线程是如何连接的
- JavaScript运行时事件循环现有技术
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- jQuery触发器事件在一个循环中多次出现
- 单击中每个循环的事件多次激发
- 使用javascript点击事件的循环引用
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 基于事件在循环中隐藏元素
- 关于动态元素中循环中的事件
- 页面卸载期间的JavaScript事件循环
- 当从jquery的点击事件中的每个循环创建的数组到它之外时,它显示空白数组
- Node.js阻止事件循环
- 循环(事件)中的闭包问题
- 在FullCalendar插件上创建一个循环事件
- Jquery对话框循环事件
- 如何使用angular引导日历为循环事件提供dtStart和until