Javascript 如何在事件处理程序中获取变量?
如何从事件处理程序中的for循环中获取内容 这个json数组Javascript 如何在事件处理程序中获取变量?,javascript,jquery,json,Javascript,Jquery,Json,如何从事件处理程序中的for循环中获取内容 这个json数组 var elements = [ { "id": "#id1", "name": "text1" }, { "id": "#id2", "name": "text2" } ]; 传递给该函数 function setHandlers(elements) { for (var i = 0; i < elements.length; i++) { $(document).on("focusout", e
var elements = [ { "id": "#id1", "name": "text1" }, { "id": "#id2", "name": "text2" } ];
传递给该函数
function setHandlers(elements) {
for (var i = 0; i < elements.length; i++) {
$(document).on("focusout", elements[i].id, function() {
alert(elements[i].id); // doesn't work because 'element' isn't
// defined.
});
}
}
函数集处理程序(元素){
对于(var i=0;i
如何访问元素而不在函数外部定义它?编辑:类型应该是元素问题在于闭包变量
i
。您可以通过使用局部闭包来使用它
function setHandlers(elements) {
$.each(types, function(idx, obj){
$(document).on("focusout", obj.id, function() {
alert(obj.id); // doesn't work because 'element' isn't
// defined.
});
})
}
注意:您正在迭代
类型
,这是一个错误吗?您的代码应该如下所示:
function setHandlers(elements) {
for (var i = 0; i < elements.length; i++) {
(function(i){
$(document).on("focusout", elements[i].id, function() {
alert(elements[i].id);
});
})(i);
}
}
函数集处理程序(元素){
对于(var i=0;i
您需要一个匿名函数来保持每个循环中的i值。也就是说,将它放在单独的上下文中解决问题。它是
类型
还是元素
只是在事件处理程序中使用这个
?还有没有jquery的解决方案吗(我很感兴趣!)@user2737037查看其他答案