我有一些htmls,其中一些标签没有任何子项,我想识别它们并计算这些标签的数量。
我尝试过以下操作,似乎无法正常工作:
var count = 0;
$("th[class=gridlabel]").each(function(){
if($("th[class=gridlabel]").children().length<1)
{
count++;
}
});
return count;
alert(count);
不确定这里的问题是什么。
我已经从html源代码添加了一些额外的脚本,我想确保“count”只计算前两个标签,“answer 3”和“answer 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>
答案 0 :(得分: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++;
}
})
这样你就可以覆盖任何可能的子标签。这实际上取决于你的需求。
答案 1 :(得分:0)
试试这个:
var count = 0;
$("th[class=gridlabel]").each(function(){
if(this.children().length<1)
{
count++;
}
});
return count;
alert(count);