Существует ли нечувствительная к регистру версия селектора jQuery, содержащая регистр, или я должен выполнить работу вручную, зациклив все элементы и сравнив их .text () со своей строкой?
javascript
jquery
jquery-selectors
похлопывание
источник
источник
Ответы:
В конечном итоге я сделал для jQuery 1.2:
Это расширит jquery, чтобы иметь селектор: Contains без учета регистра, селектор: contains остается неизменным.
Редактировать: Для jQuery 1.3 (спасибо @ user95227) и позже вам нужно
Редактировать: очевидно доступ к DOM напрямую с помощью
вместо того
В предыдущем выражении это значительно ускоряется, поэтому попробуйте на свой страх и риск, если скорость является проблемой. (см @John «S вопрос )
Последнее редактирование: для jQuery 1.8 должно быть:
источник
Чтобы сделать его опционально нечувствительным к регистру: http://bugs.jquery.com/ticket/278
затем использовать
:containsi
вместо:contains
источник
Начиная с jQuery 1.3, этот метод устарел. Чтобы это работало, его нужно определить как функцию:
источник
Если кому-то (например, мне) интересно, что означают a и m [3] в определении Contains .
KEY / LEGEND: параметры, предоставляемые jQuery для использования в определениях селектора:
r = jQuery массив изучаемых элементов. (например: r.length = количество элементов)
i = индекс элемента, который в настоящее время находится на рассмотрении, в массиве r .
a = элемент в настоящее время находится под пристальным вниманием. Оператор выбора должен возвращать true, чтобы включить его в соответствующие результаты.
m [2] = имя_узла или * то, что мы ищем (слева от двоеточия).
m [3] = параметр, переданный в: селектор (параметр). Обычно это порядковый номер, например : nth-of-type (5) , или строка, например : color (blue) .
источник
В jQuery 1.8 вам нужно будет использовать
источник
Вариант, который, кажется, работает немного быстрее и также допускает регулярные выражения :
Это не только нечувствительно к регистру, но и позволяет выполнять мощный поиск, например:
$("p:containsCI('\\bup\\b')")
(Соответствует «вверх» или «вверх», но не «верхний», «пробуждение» и т. Д.)$("p:containsCI('(?:Red|Blue) state')")
(Соответствует «красному состоянию» или «синему состоянию», но не «активному состоянию» и т. Д.)$("p:containsCI('^\\s*Stocks?')")
(Соответствует «акции» или «акции», но только в начале абзаца (игнорируя все начальные пробелы).)источник
Может быть поздно .... но,
Я бы предпочел пойти по этому пути ..
Таким образом, вы не вмешиваетесь в NATIVE '.contains' jQuery ... Возможно, вам понадобится значение по умолчанию позже ... если вы вмешаетесь , вы можете оказаться в stackOverFlow ...
источник
Код обновления прекрасно работает в версии 1.3, но в отличие от предыдущего примера «содержит» должно быть в нижнем регистре на первой букве.
источник
:contains
и:Contains
оба работали одновременно.Обратитесь ниже, чтобы использовать «: содержит», чтобы найти текст, игнорирующий чувствительность к регистру в HTML-коде,
Вы также можете использовать эту ссылку, чтобы найти код, игнорирующий регистр, основанный на вашей версии jquery, Make jQuery: содержит регистр-нечувствительный
источник
Более быстрая версия с использованием регулярных выражений.
источник
У меня была похожая проблема со следующим не работает ...
Это работает и без необходимости расширения
Это тоже работает, но, вероятно, попадает в категорию "ручной цикл" ....
источник
Новая переменная, я даю ей имя subString и помещаю строку, которую вы хотите найти, в некоторые элементы текста. Затем с помощью селектора Jquery выберите нужные вам элементы, такие как мой пример,
$("elementsYouNeed")
и отфильтруйте по.filter()
. В.filter()
нем будут сравниваться каждый элемент в$("elementsYouNeed")
с функцией.В функции, которую я использую
.toLowerCase()
для текста элемента, также есть подстрока, которая может избежать чувствительного к регистру условия и проверить, есть ли в нем подстрока. После этого.filter()
метод создает новый объект jQuery из подмножества соответствующих элементов.Теперь вы можете получить соответствующие элементы в matchObjects и делать что хотите.
источник