使用 :contain 在列表中

Use :contain in list

我这样做得到了我想要的:

$('#stats_0 li:contains("Speed")').text();

但是,我必须查询速度以外的其他特征,在我刚刚通过 id 获得的同一个列表中。所以为了不让jQuery在整个DOM出去闹鬼,我想缓存列表,然后应用过滤器。

我试过了:

var list = $('#stats_0');
var txt = $(list).('li:contains("Speed")').text();

但我收到语法错误:

Uncaught SyntaxError: Unexpected token (

我该如何进行? ref 对我没有帮助。

function('...').('...') 是无效的 JavaScript 语法。调用运算符(())应该在函数之后用于调用函数。您正在寻找 find 方法:

list.find('li:contains("Speed")').text();

另请注意,无需将 list 传递给 jQuery 构造函数,因为 list 已经是一个 jQuery 对象。如果您将 jQuery 对象传递给 jQuery 构造函数,jQuery 不会抱怨并且它 returns 是同一个对象,但是这样做是不必要的并且不会产生很多有道理。


您可以在您的案例中使用的另一个选项是缓存目标 li 元素并使用 filter 方法:

var $list = $('#stats_0 li');
var txt = $list.filter(':contains("Speed")');