2012-04-21 63 views
0

我想写一些javascript来确保一个表有lineNumber其中一个特定类的tr元素。我有以下的循环可以这样做:不知道为什么这个选择器返回大小0

while ($(".functionCodeLine").size() < lineNumber) { 

     console.log($(".functionCodeLine").size()); 

     funcLineRow = $('<tr class="functionCodeLine"></tr>'); 
     table.append(funcLineRow); 

... 
} 

但在我的日志语句我看到返回的大小为0。如果我检查DOM我看到正在添加class属性新潮流的。所以我有点不知所措,为什么大小总是为0,循环永远不会终止。我错过了什么?

Here's a jsfiddle.net demo

+3

请创建一个HTTP ://jsfiddle.net/ demo。 – 2012-04-21 20:11:13

+1

你为什么使用这样的循环?你只需要:获取元素的实际数量,得到所需的元素数量,然后使用'for(i = 0; i = diffenrence)'循环得到所需的元素数量差异 – pomeh 2012-04-21 20:12:55

+0

@pomeh假设OP可以得到它在这种情况下,'while'循环比'for'循环更简洁。 – 2012-04-21 20:16:14

回答

0

所以,我真的不知道是什么问题,是在上面的代码,但我还是能够解决它:

while (table.find(".functionCodeLine").size() < lineNumber) { 

    console.log(table.(".functionCodeLine").size()); 

    funcLineRow = $('<tr class="functionCodeLine"></tr>'); 
    table.append(funcLineRow); 

... 
} 
+0

如果有效,您能否将问题标记为已解决? – pomeh 2012-04-22 00:26:11

0

尝试这种说法

$(".functionCodeLine").length 
+2

这是[同样的事情](http ://api.jquery.com/size/) – 2012-04-21 20:10:16

+1

尽管最好使用'length',但这并不能解决OPs问题,因为size()和length会返回等价值。 – 2012-04-21 20:11:38

+0

是的,长度产生相同的结果。 – Dejas 2012-04-21 20:19:44

相关问题