Как правильно определить селектора $(). On()

77
9

Я работаю с существующей функцией jQuery (версия 3.2.1):

$('#example').on('click', 'tbody td:not(:first-child)', 
function (e) {
// do stuff
});

В этом случае функция (e) будет действовать, только если TD не является первым столбцом в строке.

Если мне нужно добавить еще несколько условий (в том, что будет таблицей с не менее чем 5 такими столбцами), функция станет чем-то немного уродливее.

Испытывая это, я знаю, что это работает, но должен быть лучший способ сделать это.

$('#example').on('click', 'tbody td:not(:first-child):not(:nth-
child(2)):not(:nth-child(3))',
function (e) {
// do stuff
});

Есть ли более чистая техника, указывающая на набор не условий в селекторе? Я думал, что я могу заменить строку селектора функцией, но я не видел примеров того, что используется, даже на веб-сайте jQuery.

спросил(а) 2021-01-25T20:32:24+03:00 5 месяцев назад
1
Решение
63

@lilezek ответ хороший. Если вы хотите сократить свою цель до одиночных строк, вы можете определить строки в переменной в другом месте, а затем передать переменную в качестве селектора для вашего обработчика событий.

var selector_foo = 'tbody td:not(:first-child):not(:nth-
child(2)):not(:nth-child(3))'
...
$('#example').on('click', selector_foo,
function (e) {
// do stuff
});

ответил(а) 2021-01-25T20:32:24+03:00 5 месяцев назад
63

Вы ищете что-то вроде этого?

$("#example")
.not(":first-child")
.not(":nth-child(2)")
.not(":nth-child(3)")
.on('click',
function (e) {
// do stuff
});

Отказ от ответственности: я не проверял, действительно ли это работает.

ответил(а) 2021-01-25T20:32:24+03:00 5 месяцев назад
-11

Использование класса было бы гораздо более простым решением. Просто добавьте класс, который хотите использовать, к ячейкам, которые вы хотите исключить, и выберите, как обычно.

tbody td:not(.exclude)

ответил(а) 2021-01-25T20:32:24+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема