jQuery - получите все строки кроме первого и последнего

я хочу динамично добавить класс ко всем строкам таблицы кроме первой и последней строки. как я сделал бы это, не присваивая css класс строкам для идентификации их. Я получаю всех кроме первой строки в настоящее время с

$("#id").find("tr:gt(0)")

я должен объединить это с not("tr:last") так или иначе, возможно?

52
задан user210757 12 February 2010 в 07:15
поделиться

2 ответа

Отбросьте gt () , поскольку я предполагаю, что он немного медленнее, чем : first .

Используйте not () вместе с : first и : last :

$('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');

Большинство браузеров автоматически добавляют элемент tbody . в разметке таблицы, если она отсутствует, поэтому селектор непосредственных дочерних элементов дал сбой - не было элементов в качестве непосредственных дочерних элементов тега

.

Я не уверен на 100%, что это делают все браузеры, поэтому было бы безопаснее просто добавить

вручную. В противном случае вам нужно немного понюхать, и вы не сможете сделать это как единое целое:

if($('table#tbl > tbody').size() > 0) {
    $('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');
} else {
    $('table#tbl > tr').not(':first').not(':last').addClass('highlight');
}

Надеюсь, это решит вашу проблему!

97
ответ дан 7 November 2019 в 09:09
поделиться

Странно, но опубликованные предложения не сработали, все они должны работать! НО ...

Если не сработало, сделайте так .... немного медленнее, но ДОЛЖНО РАБОТАТЬ !! ПОПРОБУЙТЕ:

$('table#tbl tr').addClass('highlight');
$('table#tbl tr:first-child').removeClass('highlight');
$('table#tbl tr:last-child').removeClass('highlight');
2
ответ дан 7 November 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: