里面的JQuery点击事件
我真的不知道发生了什么事……
代码如下:
for (var j=0; j<tours.length; j++){ var name = tours[j].name; var $tourLI = $(''); var $tourButton = $('
'); $tourButton.click(function() { alert(name); } }
我试图为显示游览名称的每个按钮绑定click事件,但总是显示最后一个游览名称,无论我点击哪个按钮。
我究竟做错了什么?
谢谢!
在for循环移动之前,您需要将click处理程序包装在一个闭包中以“关闭”变量name
的值。
这是因为在你点击它之前实际上并没有执行处理程序,所以否则它将只使用当时name
的当前值(无论循环中的最后一个值是什么)。
for (var j=0; j'); var $tourButton = $(' '); (function(n) { $tourButton.click(function() { alert(n); }); })(name) }
当点击被触发时, j
将具有值tours.length
。 您可以通过闭包锁定循环值以及其余变量。
for (var j=0; j'); var $tourButton = $(' '); $tourButton.click(function() { alert(name); } })(); }
试试这个…
$('.div.button-inside ').on('click',function() { alert($(this).text()); }
无需在循环内调用click事件。覆盖动态创建的按钮并在循环外调用它并使用委托事件
试试这个
$(document).on('click','div.button-inside',function() { alert($(this).text()); }
如果您想了解有关委托活动的更多信息,可以浏览链接 …