gpt4 book ai didi

javascript - 为什么我的元素在js中总是返回相同的值?

转载 作者:行者123 更新时间:2023-12-02 20:18:20 24 4
gpt4 key购买 nike

这是代码:

 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,然后,我将它绑定(bind)到一个点击事件。但最后,我的结果是所有的点击事件都输出相同的结果......我做错了吗?谢谢。

最佳答案

这是因为 clousres/variable 作用域,您的 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);
});
}

希望这有帮助。干杯。

关于javascript - 为什么我的元素在js中总是返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com