нет выбора детей - PullRequest
       14

нет выбора детей

0 голосов
/ 23 ноября 2011

У меня есть несколько 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>

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011
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 голосов
/ 23 ноября 2011

Попробуйте это:

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