jQuery .size()问题

时间:2011-01-20 20:15:09

标签: javascript jquery

当您点击“添加Div”按钮时,为什么数字不会增加?

http://jsfiddle.net/cN2zR/

3 个答案:

答案 0 :(得分:2)

当值分配给size()时,

d将被评估一次。您需要在函数内移动赋值,以便每次都对它进行求值。

或者,如果你想让它保持在外面,你可以把它变成一个函数:

var d = function() { return '<div class="historyItem">Test ' + ($("#history > div").size() + 1) + '</div>'; }

然后

$('#history').append(d());

答案 1 :(得分:1)

http://jsfiddle.net/cN2zR/3/现在就做了:)

使d成为一个函数,以便每次添加都可以运行。

var d = function(){
   return '<div class="historyItem">Test ' + ($("#history > div").size() + 1) + '</div>';
}

此外,我注意到滚动链接的问题。滚动到容器底部的快速技巧是使用.scrollTop([arbitrary high number])

答案 2 :(得分:0)

因为jquery结果的大小是每次使用时内联和ont计算的。 您可以改为将d更改为返回HTML字符串并使用它的函数,以便在每次引用时获得计算的大小。

d = function(){
    return '<div class="historyItem">Test ' + ($("#history > div").size() + 1) + '</div>';
}

$('#b').click(function() {
    //console.time("timing Time");
    $('#history').append(d());
    //console.timeEnd("timing Time");
    $('#history').scrollTo('max');
});

查看此帖子:http://jsfiddle.net/cN2zR/7/