我有这样的情况:
有8个div块,其ID如’rateN_wrapper’,其中’N’是div的数目:
<div id="rate1_wrapper">
<a href="#" id="0_1">...</a>
<a href="#" id="0_2">...</a>
<a href="#" id="0_3">...</a>
</div>
<div id="rate2_wrapper">
<a href="#" id="1_1">...</a>
<a href="#" id="1_2">...</a>
<a href="#" id="1_3">...</a>
</div>
...
var ratings = new Array();
for (i=0; i < 8; i++)
{
ratings[i] = -1; // Default is unrated
}
for (i=0; i < 8; i++)
{
$('#rate' + i + '_wrapper a').click(function() {
ratings[i] = parseInt( $(this).attr('id').split('_')[1] );
console.debug(ratings);
});
}
我的工作是使用链接的ID(已解析)在需要的地方填充数组.但是它总是只更改数组(8)的最新元素.为什么?
最佳答案
这是由for循环中的关闭引起的问题.您可以通过解析父ID来查找ID:
for (i=0; i < 8; i++)
{
$('#rate' + i + '_wrapper a').click(function() {
var parentId = $(this).parent('div').attr('id');
var index = /\d/.exec(parentId);
ratings[index] = parseInt( $(this).attr('id').split('_')[1] );
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。