我试图将几个点击操作与jQuery中的几个按钮相关联。我正在使用for循环来浏览所有按钮。
我尝试过类似的东西:
var realThis = $(this);
// ...
for (var i = 0; i < buttons.length; i++) {
if (typeof(buttons[i].callback) !== 'undefined')
$('#' + buttons[i].id).click(function(){
buttons[i].callback(realThis.getFormValues());
});
}
我收到了编辑软件的警告:
可从闭包
访问可变变量
我尝试了几件事但没有成功。
这里有任何帮助吗?
答案 0 :(得分:1)
我会更改HTML的结构,以便您知道将附加哪个处理程序。数据属性可能对您有所帮助:
<button id="button-1" data-button-id="1" class="button-action">
Do action 1
</button>
<button id="button-2" data-button-id="2" class="button-action">
Do action 2
</button>
然后,您可以将处理程序附加到所有按钮,并在点击时计算出您要调用的功能,而不是提前:
$('.button-action').on('click', function (e) {
// get the button index from the data attribute
var buttonId = $(e.currentTarget).data('buttonId');
// if there's a callback then execute it
if (buttons[buttonId].callback) {
buttons[buttonId].callback(realThis.getFormValues());
}
});
答案 1 :(得分:0)
终于找到了我的问题的答案:
for(var i = 0; i < buttons.length; i++)
{
(function()
{
if(buttons[i].callback)
{
var callbackTemp = buttons[i].callback;
$('#' + buttons[i].id).click(function(){ callbackTemp(realThis.getFormValues()); });
}
})();
}
谢谢你的帮助;)