如何在下面的示例中正确绑定值j
?
for (j = 0; j < shorts[i+1].length; j++) {
$('#Container').append($('<button id="but'+(j+1)+'" type="button" onclick="func(this,j)">'+ values[j]+'</button>'));
)};
答案 0 :(得分:2)
j
应该作为变量连接,否则它将被视为字符串,onclick方法看起来像func(this,j)
。
这应该onclick="func(this,'+j+')"
for (j = 0; j < shorts[i+1].length; j++) {
$('#Container').append($('<button id="but'+(j+1)+'" type="button" onclick="func(this,'+j+')">'+ values[j]+'</button>'));
};
您也可以通过这样的绑定代替内联的onclick方法
来实现var $button = $('<button />')
.attr('id', j+1)
.text(j+1)
.on('click', func.bind(null, j+1));
$('#Container').append($button);
这样,函数可以使用值j + 1。
function func(a){
alert(a);
}
for (var j = 0; j < 10; j++) {
var $button = $('<button />')
.attr('id', j+1)
.text(j+1)
.on('click', func.bind(null, j+1));
$('body').append($button);
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:1)
您需要将j
从String中取出并正确连接
values = [1, 2, 3, 4, 5, 6, 7, 8, 1, 3];
for (j = 0; j < 10; j++) {
var div = $('<button id="but' + (j + 1) + '" type="button" onclick="func(this,' + j + ')">' + values[j] + '</button>');
$('#mydiv').append(div);
}
答案 2 :(得分:1)
您可以使用基本字符串连接执行此操作,如下所示:
$('#Container').append($('<button id="but'+(j+1)+'" type="button" onclick="func(this,'+j+')">'+ values[j]+'</button>'));
或者您可以使用事件对象的属性从正在单击的元素中提取信息。请参阅srcElement
here上的部分。
这可以通过定义像
这样的函数来完成function(event){
//pull info from event with
event.srcElement
//use that to decide what to do inside the function
}
并将该字符串传递到您的html onClick
答案 3 :(得分:1)
在没有内嵌点击处理程序的情况下附加按钮。
添加委派的点击处理程序,您可以使用index()
方法访问按钮的位置:
var values= ['a','b','c','d','e','f','g','h','i','j'];
for (j = 0; j < 10; j++) {
$('#Container').append($('<button>' + values[j] + '</button>'));
}
$('#Container').on('click', 'button', function() {
alert($(this).index());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Container"></div>