jQuery"不包含"选择器

Jos*_*osh 38 javascript jquery

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

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

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

  1. "反转":contains()选择器结果 - 我想选择匹配的元素,并隐藏它们.
  2. 使匹配区分大小写.

我发现我可以使用.filter(函数(索引)),但我想知道我是否过度思考这个问题 - 有没有办法用jQuery内置的选择器/函数来完成这个?

Bri*_*nna 79

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

$(':not(:contains('+ userString +'))').hide(); 
Run Code Online (Sandbox Code Playgroud)

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

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


din*_*pal 12

假设你想要的列表all <td> that不包含字符串'Dinesh'.(假设Dinesh在名称属性内)

$('tableId > tbody > tr > td').not("[name*='Dinesh']")
Run Code Online (Sandbox Code Playgroud)


小智 5

用这个:

$("div:not(:contains('John'))").css("text-decoration", "underline");
Run Code Online (Sandbox Code Playgroud)