jQuery在元素中搜索文本作为SQL查询LIKE?

its*_*sme 3 javascript search jquery

嗨,无论如何在dom中搜索文本,就像我们为SQL查询LIKE做的那样?

我的意思是,我有.

<ul>
<li>ab</li>
<li>abrecot</li>
<li>abus</li>
<li>aby</li>
<li>abrea</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想搜索"abre",所以返回ASC文本顺序:

<li>abrea</li>
<li>abrecot</li>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

绝对的查询看起来像:

SELECT <li> FROM <ul> WHERE text LIKE 'abre%' ORDER BY text ASC; :))
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 6

在查找文本指定字符串开头的元素,可以使用以下filter方法:

var x = $("ul li").filter(function() {
    return $(this).text().substr(0, 4) === "abre";
});
Run Code Online (Sandbox Code Playgroud)

这将仅返回在开头具有字符串"abre"的元素.使用该contains方法的其他答案将返回在其中任何位置找到的字符串的元素,这与您的伪SQL查询不匹配.

这是上面的一个工作示例.


dou*_*ald 5

我想你会想要jQuery'contains'函数,看看这里的文档:

http://api.jquery.com/contains-selector/

您的示例可能如下所示:

$("li:contains('abre')")
Run Code Online (Sandbox Code Playgroud)

编辑以在此处包含注释,如果您正在寻找"以...开头",则可以使用以下语法对元素执行此操作:

$('li[anAttribute^="abre"]')
Run Code Online (Sandbox Code Playgroud)

但这假设您有一个属性来查询我认为您不会做的事情,在这种情况下,过滤器的答案可能最适合您的需求.