Подтвердить что ты не робот

JQuery "не содержит" селектор

: contains() Селектор jQuery позволяет сопоставлять элементы поиска, содержащие указанную строку текста. Мне кажется, что я хочу сделать: я предоставляю пользователю текстовое поле "фильтр", которое они могут вводить, и у меня есть набор элементов списка.

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

Я могу прослушать событие keyup в текстовом поле, но я не уверен, как сделать две вещи:

  • "Инвертировать" результаты: contains() - я хочу выбрать элементы, которые не совпадают, и скрыть их.
  • Сделать соответствующий регистр чувствительным.

Мне пришло в голову, что я могу использовать .filter(function (index)), но мне интересно, не переусердняю ли я это - есть ли способ выполнить это уже с помощью селекторов/функций, встроенных в jQuery?

4b9b3361

Ответ 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'])