为什么我的元素总是在 js 中返回相同的值
Why my element always return the same value in js?
这是代码:
for(var i = 0; i<aLotOfItems.length; i++){
var tmpItem = aLotOfItems[i];
//this will generate a <a> for me to handle the event
tmpItem.toHTMLElement().prependTo($("#main"));
//bind the click event
$("#edit_"+tmpItem.m_sId).bind('click', function(){
alert(tmpItem.m_sId);
});
}
首先,我有一个 aLotOfItems 数组,然后我一个接一个地获取它,将其传递到 tmpItem 对象中。 而这个对象,有一些htmlContent,我把它拿出来,比,前缀到main,toHTMLElement也会生成一个标签,它使用edit_+m_sId来生成id,然后,我把它绑定到一个点击事件。但最后,我的结果是所有点击事件都输出相同的结果......我做错了吗?谢谢。
这是因为 clousres/变量作用域,您的 tmpItem.m_sId
var 将只获得其最后一个值。 但是,如果您这样做:
$("#edit_"+tmpItem.m_sId).bind('click', function(){
alert($(this).attr("id"));
});
你肯定会得到不同的结果。
编辑 以防万一您需要在点击事件中访问您的 tmpItem,您可以按如下方式使用.data
:
for(var i = 0; i<aLotOfItems.length; i++){
var tmpItem = aLotOfItems[i];
//this will generate a <a> for me to handle the event
tmpItem.toHTMLElement().prependTo($("#main"));
//bind the click event
$("#edit_"+tmpItem.m_sId).data("tmpItem", tmpItem).bind('click', function(){
var tmpItem = $(this).data("tmpItem");
alert(tmpItem.m_sId);
});
}
希望这有帮助。干杯。
相关文章:
- 如何在d3.js中返回路径的y坐标
- Angular js-返回一个包含类似
- JS验证ajax返回的html中的表单数据
- JS变量返回的对象不是值
- 将复杂对象从angular js传递到web api,它总是返回404
- Morris.js无法显示ajax返回的数据
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 如何使用 AJAX 返回 JS 值
- JSON字符串仍然返回JS中的[object object]
- 使用返回 JS
- ASP.net C# 从另一个线程返回 JS 警报
- 使用webpackurl加载程序加载svg会返回js文件
- 用html javascript创建一个简单的成本估算器.从HTML按钮调用JS函数.返回JS中的值
- AJAX-返回JS数组并在成功事件中使用它
- wordpresscontactform7插件在控制台上返回js错误
- 从PHP返回JS源代码
- 从D3函数返回js数据集
- 在返回js代码的php函数中传递一个php变量给javascript
- 返回JS函数的值,并将其用作输入按钮的值
- 如何在asp.net mvc中从控制器返回js自定义警报