试图在jQuery中编号对象

时间:2012-02-12 16:45:15

标签: javascript jquery

我正在尝试对象进行编号,这些对象可以通过拖放来添加到购物车中。因此,此代码段应检查span.amountVal中写入的当前数字,并轻松地将“+ 1”添加到此数字,但结果始终为“1”。当我取消注释'thert(i ++);'时,代码段工作就像我想要的那样。我很困惑,这是关于什么的?

$.favList.find("div[data-asset-id="+ _itemID +"]").each(function() {
    var i = $(this).find("span.amountVal").text();

    // alert(i++);

    $(this).find("span.amountVal").text(i++);
});

谢谢。

3 个答案:

答案 0 :(得分:2)

i++首先返回i的值,然后递增它。当alert( i++ )到位时,变量已经递增一次。

++放在变量前面:

$(this).find("span.amountVal").text( ++i );

或者只是添加一个,因为您正在丢弃变量:

$(this).find("span.amountVal").text( i + 1 );

答案 1 :(得分:2)

您遇到pre-increment/post-increment问题,以下更改应解决此问题:

$.favList.find("div[data-asset-id="+ _itemID +"]").each(function() {
    var i = $(this).find("span.amountVal").text();

    $(this).find("span.amountVal").text(++i);
});

Pre-Incrementi添加一个, 然后 返回i,而Post-Incrementi添加1在它返回后。

以下是StackOverflow上关于主题的类似帖子:

post increment vs pre increment - Javascript Optimization

答案 2 :(得分:0)

你在做什么?它不应该读取SPAN的价值,这是不好的做法。相反,它应该读取项目长度(例如,在对象内),然后显示它。