2011-12-14 3 views
2

Как использовать jQuery для поиска элемента (tr) с наименьшим количеством детей (td) в моем столе?Найти элемент с наименьшим количеством детей?

+0

AFAIK должно быть одинаковое количество 'td' в каждом' tr' в 'таблице' либо может быть b атрибут' colspan' или 'rowspan'. вам интересно узнать, какой tr имеет td максимум 'colspan' ?? – diEcho

ответ

4
$(document).ready(function(){ 
    var tr = $('tr'); 
    tr.sort(function(a, b) { 
     return $(a).children('td').length - $(b).children('td').length; 
    }); 
    // $(tr).first() is your TR with fewest TDs 
}); 

JSFiddle Example

+0

+1 Должен был подумать об этом. : D Приветствия! –

+0

Работает хорошо. Добавлен пример скрипки. –

1

я бы, вероятно, инкапсулировать, что в пользовательском JQuery метод обертки.

(function($) { 

    // blah with function name 
    $.fn.fewestChildren = function() { 

     var $this = $(this).filter('tr'), 
      bookmark = $this.eq(0) 
      ; 

     $this.not(bookmark).each(function() { 
      var $t = $(this); 
      if (bookmark.children('td').length > $t.children('td').length) { 
       bookmark = $t; 
      } 
     }); 

     return bookmark; 
    }; 

})(jQuery); 

Так что я могу просто использовать это как:

var foo = $('#mytable tr').fewestChildren(); 

Я бы очень хотел увидеть решение без необходимости использовать в bookmark переменной, хотя.

Смежные вопросы