起始情况
这两个命令应该是等效的。
jQuery('a').filter(':contains(about)');
和
jQuery.find('a').filter(':contains(about)');
问题
实际上,第一个命令执行良好,而第二个命令会引发以下异常:
TypeError: :contains(about) is not a function
这是为什么呢?jQuery('a')
和jQuery.find('a')
不应该返回相同的对象吗?如果不是,有什么区别?
解释
我正在动态构建一个JQuery命令链(在我的项目Abmash中使用的JQuery Java包装器的一部分)。因此,我更喜欢像 jQuery.find('a').filter(':contains(about)')
这样的方法链。
>jQuery.find('a')
返回一个数组(Array.filter()
将函数作为参数。
jQuery('a')
返回一个 jQuery-array-like-Object
静态调用 ($.find()) 返回一个数组,而不是一个包装的集合。我认为您正在寻找的是:
$('a:contains(about)');