jQuery :contains selector to search for multiple strings

Solution 1:

Answer

To find li's that have text containing BOTH Mary AND John:

$('li:contains("Mary"):contains("John")')

To find li's that have text containing EITHER Mary OR John:

$('li:contains("Mary"), li:contains("John")')

Explanation

Just think of the :contains as if it was a class declaration, like .class:

$('li.one.two').      // Find <li>'s with classes of BOTH one AND two
$('li.one, li.two').  // Find <li>'s with a class of EITHER one OR two

It's the same with :contains:

$('li:contains("Mary"):contains("John")').      // Both Mary AND John
$('li:contains("Mary"), li:contains("John")').  // Either Mary OR John

Demo

http://jsbin.com/ejuzi/edit

Solution 2:

How about

$('li:contains("John"),li:contains("Mary")')