JQuery单击事件内部的
我真的不知道发生了什么事 代码如下:JQuery单击事件内部的,jquery,Jquery,我真的不知道发生了什么事 代码如下: for (var j=0; j<tours.length; j++){ var name = tours[j].name; var $tourLI = $('<li id="'+name+'"></li>'); var $tourButton = $('<div class="button-inside"><span>'+name+'</span><span&g
for (var j=0; j<tours.length; j++){
var name = tours[j].name;
var $tourLI = $('<li id="'+name+'"></li>');
var $tourButton = $('<div class="button-inside"><span>'+name+'</span><span></span></div>');
$tourButton.click(function() {
alert(name);
}
}
for(var j=0;j当点击被触发时,j
将具有值tours.length
。您可以通过闭包锁定循环值以及其余变量
for (var j=0; j<tours.length; j++){
(function(){
var currentJValue = j;
var name = tours[currentJValue].name;
var $tourLI = $('<li id="'+name+'"></li>');
var $tourButton = $('<div class="button-inside"><span>'+name+'</span><span></span></div>');
$tourButton.click(function() {
alert(name);
}
})();
}
for(var j=0;j无需在循环内调用click事件..附加动态创建的按钮并在循环外调用它并在委托事件上使用
试试这个
$(document).on('click','div.button-inside',function() {
alert($(this).text());
}
如果您想阅读有关委托事件的更多信息,可以浏览…在for循环继续之前,您需要将单击处理程序包装在一个闭包中,以“关闭”变量name
的值
这是因为在单击处理程序之前,它不会实际执行,否则它将只使用当时的name
当前值(无论循环中的最后一个值是什么)
for(var j=0;j试试这个
$('.div.button-inside ').on('click',function() {
alert($(this).text());
}
这是因为当您单击按钮时,循环已完成。是否要将新按钮附加到文档中?是的,我希望如此..我将尝试以下示例。。
$('.div.button-inside ').on('click',function() {
alert($(this).text());
}