javascript - 如何将对象传递给 onclick 事件

标签 javascript jquery

<分区>

Possible Duplicate:
Event handlers inside a Javascript loop - need a closure?

我正在通过 API 调用获取一些 json 对象。它具有以下格式:-

{data:[{id:"1",name:"some1",url:"someurl1"},{id:"2",name:"some2",url:"someurl2"}...]}

我通过 jsonp 结果得到它,它被解析如下:-

function(results){
   for(var i=0;i<10;i++){
    item=document.createElement("div");
    item.innerHTML=results.data[i].name;
    item.onclick=function(){
        console.log(results.data[i]);  //--->this is where i am stuck 
      }
    }
 }

我如何将特定对象从循环传递到 onclick 事件。我的意思是创建的第一个 div 应该有一个带有第一个对象数据的 onclick 事件,第二个 div 应该有第二个对象的数据。 请问我是否需要更多说明

编辑:- 如果我这样做:-

item.onclick=function(){
  console.log(results.data[1])
}

我在所有项目的 onclick 事件中得到了那个特定的对象,但这不是我想要的

编辑:- 这就是我最终解决它的方式。感谢 DCoder 指向的链接。

item.onclick =function(object){
           return function(){
           //do something with the object
           }

         }(obj);

最佳答案

快速解决方案:

function(results){
    for(var i=0;i<10;i++){
        (function(index){ // create a closure, this makes a new scope
            item=document.createElement("div");
            item.innerHTML=results.data[index].name;
            item.onclick=function(){
                console.log(results.data[index]);  //--->this is where i am stuck 
            }
        })(i);  // pass in i
    }
}

关于javascript - 如何将对象传递给 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501867/

相关文章:

javascript - 简单的工具提示插件 - onclick 选项不起作用 - jQuery

javascript - 加载时文本内容随机化

javascript - firestore 批量写入失败时会自动重新运行吗?

javascript - 将数组推送到数组列表不起作用

javascript - 获取页面加载时显示的默认值

javascript - 是否可以在启动或每个 Action 时将变量传递给 jquery?

javascript - Javascript 中的 "initiating a variable": what does it mean?

javascript - 如何在 React Native 中获取从子组件到父组件的回调

jquery - Jquery Mobile 中的简单表单提交

javascript - 在 jquery 中自动选择通信 radio