Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在事件处理程序中获取变量?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何在事件处理程序中获取变量?

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

如何从事件处理程序中的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", 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查看其他答案