我正在尝试创建多个按钮,每个按钮都会做一些事情。它在each
循环之外工作得很好,但是当我在click
函数中插入each
函数时,它不起作用。
$.each(data.arr, function(i, s){
html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button class="second">Btn2</button></div>';
var btnclass="#mybtn"+s.id+" .first";
$(btnclass).click(function(){
//do something
});
});
请让我知道出了什么问题......
非常感谢!!!
叶兰。
答案 0 :(得分:2)
缺少id选择器和类
之间的空格var btnclass="#mybtn"+s.id " + .first";
^
Space here .. And the
+ sign should come after the string
还尝试在for循环外移动click事件并委托它...
$.each(data.arr, function(i, s){
html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button class="second">Btn2</button></div>';
});
$('body').on('click', '.first' , function(){
//do something
});
答案 1 :(得分:1)
$.each(data.arr, function(i, s){
html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button class="second">Btn2</button></div>';
var btnclass="#mybtn"+Id+" .first";
$(btnclass).click(function(){
//do something });
});
});
您将事件分配给<div>
,而不是按钮
这也失败了,因为你没有“Id”
永远不会将HTML添加到任何事件中=无事件
“正确”的方式(猜测意图):
$.each(data.arr, function(i, s){
var html = '<div id="mydiv'+s.id+'">';
html += '<button id="mybtn1'+s.id+'" class="first clickbtn">Btn1</button>';
html += '<button id="mybtn2'+s.id+'" class="second clickbtn">Btn2</button>';
html += '</div>';
$(someElement).append(html);
$(".clickbtn").on('click', function(){
//do something });
});
});
答案 2 :(得分:0)
不
var btnclass =“#mybtn”+ Id +“。first”;
应该是
var btnclass =“#mybtn”+ s.id +“。first”;
此外,您需要将html变量的内容附加到DOM,因此click事件可以找到它。