jQuery“不包含”选择器

时间:2013-11-19 02:38:42

标签: javascript jquery

:contains() jQuery选择器允许您匹配包含指定文本字符串的查找元素。我想要做的似乎是相关的:我正在为用户提供一个他们可以输入的“过滤器”文本框,我有一组列表项。

我想让所有不包含用户在文本框中输入的文本的列表项在键入时隐藏。

我可以在文本框上听取keyup事件,但我不确定如何做两件事:

  1. “反转”:contains()选择器结果 - 我想选择匹配的元素,并隐藏它们。
  2. 使匹配区分大小写。
  3. 我发现我可以使用.filter( function(index) ),但我想知道我是否过度思考这个问题 - 有没有办法通过内置于jQuery的选择器/函数实现这一点? / p>

3 个答案:

答案 0 :(得分:73)

假设您的用户文本存储在名为userString的变量中:

$(':not(:contains('+ userString +'))').hide(); 

将隐藏所有不包含该字符串的元素。

编辑: 如果您可以控制列表项中的元素,则可以在将用户文本存储在userString var中时对其进行转换。

答案 1 :(得分:12)

假设您希望all <td> that列表中不包含字符串&#39; Dinesh&#39;。(假设Dinesh在名称属性内)

$('tableId > tbody > tr > td').not("[name*='Dinesh']")

答案 2 :(得分:5)

使用此:

$("div:not(:contains('John'))").css("text-decoration", "underline");