Есть ли лучший способ выбрать таблицы на основе того, сколько строк у них есть через jQuery? - PullRequest
3 голосов
/ 13 июня 2010

Я собираюсь собрать группу таблиц, содержащих более X строк, с помощью jQuery. В настоящее время я делаю что-то похожее на:

    $("table").each(function(){
 if($(this).find("tr").length > x){
  tableArray[tableArray.length] = $(this);
 }
});

и затем действует на членов таблицы Array.

Есть ли лучший способ получить эти таблицы, возможно, хороший селектор, который я пропустил?

Спасибо

Ответы [ 3 ]

3 голосов
/ 13 июня 2010

Попробуйте использовать селектор :has:

$('table:has(tr:eq('+x+'))');

Это будет захватывать только те таблицы, в которых есть строка x. Обратите внимание, что :eq() принимает в качестве параметра индекс, начинающийся с нуля, то есть если x равно 1, будут выбраны таблицы, содержащие 2 строки или более.

РЕДАКТИРОВАТЬ :has падает для меня, с :nth-child и :eq. .has() (метод, эквивалентный селектору) работает, хотя:

alert($('table').has("tr:nth-child(2)").length)​

Хотя обратите внимание, что параметр, переданный в nth-child, не основывается на нуле, как :eq.

Пример - оповещает о количестве найденных таблиц с двумя или более строками.

0 голосов
/ 13 июня 2010

Я думаю, что ваш путь в порядке, честно говоря.

Один альтернативный способ - использовать селектор :has в сочетании с nth-child: задать jQuery для $("tbody:has(:nth-child(4))).... Это говорит: «найти все таблицы, у которых tbody элементы имеют 4 или более дочерних элементов». Поскольку дочерние элементы tbody обычно являются tr элементами, это поможет.

0 голосов
/ 13 июня 2010

Отметьте это
http://api.jquery.com/nth-child-selector/

$("table tr:nth-child(" + (x + 1) + ")").parent();

Не проверял, но должен быть близко.Обратите внимание, что вам может потребоваться два вызова .parent (), в зависимости от структуры вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...