首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JQuery $.grep()不能与选择器一起工作?

为什么JQuery $.grep()不能与选择器一起工作?
EN

Stack Overflow用户
提问于 2011-07-29 11:26:40
回答 3查看 1.6K关注 0票数 3

换句话说,这是可行的:

代码语言:javascript
运行
复制
$.grep($('div'), function(div) { return div.className == 'section' });

这不会:

代码语言:javascript
运行
复制
$('div').grep(function(div) { return div.className == 'section' });

此外,正因为如此,搜索标记列表变得很棘手--第一行代码返回一个平面数组,而不是一个可以调用.css()等的链式JQuery对象。

grep在JQuery中以这种方式工作有什么好的理由吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-29 11:28:54

您要查找的函数是$.fn.filter()的第二个(回调)变体。

它的工作方式与$.grep大致相同,但作用于jQuery对象,并返回从回调函数返回true的所有元素的jQuery对象,例如:

代码语言:javascript
运行
复制
$('div')
.filter(function() {
    return this.className == 'section'
})
.css( ... ) ;
票数 3
EN

Stack Overflow用户

发布于 2011-07-29 11:33:10

我相信jQuery.grep()旨在成为array.Filter的实现,类似于jQuery.inArray()旨在提供array.indexOf的实现。因此,它们不遵循其他jQuery方法约定。

正如其他人所指出的那样,filter()的存在就是为了做你想做的事情。

票数 0
EN

Stack Overflow用户

发布于 2011-07-29 11:38:43

$.grep方法是用于数组的utility methods之一。还有其他方法遵循相同的模式,如$.each$.map$.inArray$.merge

如果您想要在元素集合上工作的方法,您应该查看traversing methods,与$.grep方法对应的是filter method

此外,如果恰好有一个元素数组,则可以轻松地将它们放入jQuery对象中:

代码语言:javascript
运行
复制
$($.grep($('div'), function(div) { return div.className == 'section' }))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6868319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档