jQuery: содержит селектор для поиска нескольких строк
Предполагая, что у меня есть:
Mary John, Mary, Dave John, Dave, Mary John
Если мне нужно найти все
- Строка содержит - игнорировать регистр
- jQuery, если div содержит этот текст, замените ту часть текста
- Использование contains () в LINQ to SQL
- C ++ неявный конструктор копирования для classа, который содержит другие объекты
- .Contains () в списке пользовательских объектов classа
Поиск одной строки кажется простым:
$('li:contains("John")').text()
Я ищу что-то вроде следующего псевдокода:
$('li:contains("John")' && 'li:contains("Mary")').text()
Благодаря!
- Как сделать jQuery Содержит регистр без учета регистра, в том числе jQuery 1.8+?
- Метод ContainArrayList
- Нечувствительный к регистру «Содержит (строка)»
- Java List.contains (объект с значением поля, равным x)
- Как проверить, содержит ли строка текст из массива подстрок в JavaScript?
- LINQ: Строка строки Entity содержит любой массив строк
- Java, упрощенная проверка, если int array содержит int
- Как использовать LINQ Contains (string ) вместо Contains (string)
ответ
Это вот так:
$('li:contains("Mary"):contains("John")')
объяснение
Просто подумайте о :contains
как если бы это было объявление classа, например .class
:
$('li.one, li.two'). //you want either one OR two $('li.one.two'). //you want BOTH on one element // same with :contains $('li:contains("mary"), li:contains("john")'). // either mary OR john $('li:contains("mary"):contains("john")'). //li, which contains both
демонстрация
Как насчет
$('li:contains("John"),li:contains("Mary")')
Ответ
Правильный синтаксис будет равен $("li:contains('John'),li:contains('Mary')").css("color","red")
Но я узнал, что если у вас было много случаев для тестирования, jQuery будет работать очень плохо (особенно на IE6, я знаю, он старый, но все еще используется). Поэтому я решил написать свой собственный фильтр атрибутов.
Вот как это использовать: $("li:mcontains('John','Mary')").css("color","red")
Код
jQuery.expr[':'].mcontains = function(obj, index, meta, stack){ result = false; theList = meta[3].split("','"); var contents = (obj.textContent || obj.innerText || jQuery(obj).text() || '') for (x=0;x= 0) { return true; } } return false; };
Это просто:
$("li:contains('John'):contains('Mary')")