我有一个 ajax 请求返回我 JSON
数据(对象数组)。
迭代这个数组我生成一个链接列表。我想设置一个 onClick
事件并使用来自 ajax 响应的参数调用一个函数。
可能听上去不太清楚,举个例子:
function test(param1) {
// ...
}
$.ajax({
url: 'getSomeData.php',
type: 'post',
data: data,
success: function(result){
var result = JSON.parse(result);
$div = $('<div />');
for (i in result.someObject) {
$div.append('<a href="#" id="linkID' + i + '">ajax link ' + i + '</a>');
$('#linkID' + i).click(function(){
test(result.someObject[i]); // <--- My question is here
return false;
});
}
$(document.body).append($div);
}
});
在我的函数 test
中,我总是得到迭代数组的最后一个对象。我知道为什么会发生这种情况,但我不知道如何解决。
最佳答案
这是 i 范围的问题,如果您使用闭包将其范围限制为点击事件处理程序,如下所示,它应该没问题。
(function(i) {
$('#linkID' + i).click(function(){
test(result.someObject[i]); // <--- My question is here
return false;
});
})(i);
这保证 i 是创建处理程序时的值,而不是最后设置的值。
关于JavaScript:如何在动态生成的 jQuery .click() 函数中发送函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10348814/