jQuery:包含select器来search多个string

假设我有:

<li id="1">Mary</li> <li id="2">John, Mary, Dave</li> <li id="3">John, Dave, Mary</li> <li id="4">John</li> 

如果我需要find包含“John”和“Mary”的所有<li>元素,我将如何构buildjQuery

search一个string似乎很容易:

 $('li:contains("John")').text() 

我正在寻找像下面的伪代码:

 $('li:contains("John")' && 'li:contains("Mary")').text() 

谢谢!

4 Solutions collect form web for “jQuery:包含select器来search多个string”

回答

就像这样:

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

说明

只要想想:contains就好像它是一个类声明,就像.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 

演示

http://jsbin.com/ejuzi/edit

怎么样

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

回答

正确的语法是$("li:contains('John'),li:contains('Mary')").css("color","red")

但是我发现,如果你有很多需要testing的情况,jQuery会performance得非常糟糕(特别是在IE6上,我知道它已经很老了,但仍然在使用中)。 所以我决定写我自己的属性filter。

这是如何使用它: $("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; }; 

这很容易:

 $("li:contains('John'):contains('Mary')") 
  • JQuery - 如何select基于值的下拉项目
  • Jquery UI选项卡。 如何select一个基于它的ID而不是基于索引的选项卡
  • 获取input文本框中的值
  • 为什么不jQuery炸弹,如果你的select器对象是无效的?
  • jQuery:获取包含select器的HTML?
  • jQuery:同时select一个元素的类和id?
  • 隐藏所有,但$(this)通过:不是在jQueryselect器
  • jQuery选择器用于在名称属性中使用方括号的输入
  • 有没有类似jQuery的CSS / HTMLselect器可以在C#中使用?
  • jQuery:从select器中排除$(this)
  • 打开/closurescheckbox