我有这样的情况:
有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] );
});
}