2011-11-23 114 views
0

我有一些htmls,其中一些標籤沒有任何孩子,我想識別它們並計算這些標籤的數量。沒有孩子選擇

我曾嘗試以下,它似乎並沒有工作:

var count = 0; 
$("th[class=gridlabel]").each(function(){ 
if($("th[class=gridlabel]").children().length<1) 
{ 
count++; 
} 
}); 
return count; 
alert(count); 

不知道什麼是這裏的問題。


我已經加入從HTML源代碼一些額外的腳本,我要確保「計數」只算前兩個標籤,對於「回答3」和「答案4」,因爲他們的標籤做不可以有孩子:

<tr> 
    <th class="gridlabel">answer 3</th> 
    <td headers="q12_header1" class="gridcell"><input><div><span>answer 3</span><label>1</label></div></td> 
    <td headers="q12_header2" class="gridcell"><input><div><label></label></div></td> 
    </tr> 
    <tr> 
    <th class="gridlabel">answer 4</th> 
    <td headers="q12_header1" class="gridcell"><input><div><span>answer 4</span><label>1</label></div></td> 
    <td headers="q12_header2" class="gridcell"><input><div><label></label></div></td> 
    </tr> 
    <tr> 
    <th class="gridlabel">other specify 1<input><label>other specify 1</label></th> 
    <td><input><div><span>other specify 1</span><label>1</label></div></td> 
    <td><input><div><label>2</label></div></td> 
    </tr> 

回答

3
var count = $("th.gridlabel:empty").length; 
return count; 

更新

給你提供,你可以使用這樣的事情,如果你知道「非空」細胞將有一個輸入孩子的HTML:

var count = $('th:not(:has(input))').length; 

如果你想要的東西多一點靈活,但稍長一點,你可以做一些事情:

var count = 0; 
$('th').each(function(){ 
    if($(this).children().length < 1) 
    { 
     count++; 
    } 
}) 

這樣你就可以覆蓋任何可能的子標籤。這真的取決於你需要什麼。

+0

感謝Leo,它似乎也不工作,下面是html的一部分: – user1041029

+0

我認爲你的html複製/粘貼在這裏不起作用。你應該自己編輯問題。 – Leo

+0

剛加入,謝謝 – user1041029

0

試試這個:

var count = 0; 
$("th[class=gridlabel]").each(function(){ 
    if(this.children().length<1) 
    { 
     count++; 
    } 
}); 
return count; 
alert(count);