javascript - 将循环索引与函数参数绑定(bind)

标签 javascript jquery

如何正确绑定(bind)值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>'));
)};

最佳答案

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>'));
};
<小时/>

选项 2

您还可以通过像这样的绑定(bind)而不是内联 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>

关于javascript - 将循环索引与函数参数绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30718942/

相关文章:

javascript - 如何在 jQuery 中动态添加列表项

javascript - 如何获取对象名称?

javascript - 如何获取鼠标悬停在其上的链接的文本?

javascript - 选择与单击的元素不同的元素

javascript - 如何在Google Maps中实现类似InfoWindow的Bing map ?

javascript - 使用 jQuery 组合两个表单输入值

用于 Javascript 正则表达式和数字的 Javascript 正则表达式

jquery - 使用 jQuery 存储复杂表单的状态

javascript - 循环遍历 jQuery 数组/将值输出到 div

javascript - 如何查找并替换页面上任意位置出现的字符串