Ответ
Правильный синтаксис: $("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<theList.length;x++) {
if (contents.indexOf(theList[x]) >= 0) {
return true;
}
}
return false;
};