JQuery "не содержит" селектор
: contains() Селектор jQuery позволяет сопоставлять элементы поиска, содержащие указанную строку текста. Мне кажется, что я хочу сделать: я предоставляю пользователю текстовое поле "фильтр", которое они могут вводить, и у меня есть набор элементов списка.
Я хочу, чтобы все элементы списка, которые не содержат текст, который пользователь вводил в текстовое поле, были скрыты по мере их ввода.
Я могу прослушать событие keyup в текстовом поле, но я не уверен, как сделать две вещи:
- "Инвертировать" результаты: contains() - я хочу выбрать элементы, которые не совпадают, и скрыть их.
- Сделать соответствующий регистр чувствительным.
Мне пришло в голову, что я могу использовать .filter(function (index)), но мне интересно, не переусердняю ли я это - есть ли способ выполнить это уже с помощью селекторов/функций, встроенных в jQuery?
Ответы
Ответ 1
Предполагая, что ваш текст пользователя хранится в переменной userString:
$(':not(:contains('+ userString +'))').hide();
скроет все элементы, не содержащие эту строку.
Изменить:
Если вы контролируете элементы в элементах списка, вы можете преобразовать текст пользователя при его сохранении в userString var.
Ответ 2
Используйте это:
$("div:not(:contains('John'))").css("text-decoration", "underline");
Ответ 3
Скажем, что вам нужен список all <td> that
dont содержит строку "Dinesh" (если Dinesh находится внутри атрибута name)
$('tableId > tbody > tr > td').not([name*='Dinesh'])