Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';t JQuery$.grep()是否使用选择器?_Jquery - Fatal编程技术网

为什么';t JQuery$.grep()是否使用选择器?

为什么';t JQuery$.grep()是否使用选择器?,jquery,Jquery,奇怪的是,grep不能与可选的选择器参数一起工作——您调用grep的现有方式似乎不符合JQuery约定。换句话说,这是有效的: $.grep($('div'), function(div) { return div.className == 'section' }); 这并不是: $('div').grep(function(div) { return div.className == 'section' }); 此外,由于这一点,搜索标记列表变得很困难——第一行代码在工作时返回一个平面数组

奇怪的是,grep不能与可选的选择器参数一起工作——您调用grep的现有方式似乎不符合JQuery约定。换句话说,这是有效的:

$.grep($('div'), function(div) { return div.className == 'section' });
这并不是:

$('div').grep(function(div) { return div.className == 'section' });
此外,由于这一点,搜索标记列表变得很困难——第一行代码在工作时返回一个平面数组,而不是一个可以调用.css()等的可链接JQuery对象


grep在JQuery中以这种方式工作是否有充分的理由?

您正在寻找的函数是的第二个(回调)变体

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

$('div')
.filter(function() {
    return this.className == 'section'
})
.css( ... ) ;

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


正如其他人所指出的,
filter()
是为您正在尝试的操作而存在的。
$.grep
方法是用于数组的方法之一。还有其他方法遵循相同的模式,如
$。每个
$.map
$.inArray
$.merge

如果您想要在元素集合上工作的方法,您应该查看对应于
$的方法。grep
方法将是


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

$($.grep($('div'), function(div) { return div.className == 'section' }))

它们做同样的事情似乎很奇怪,一个用于标记集合,另一个用于数组。两者使用相同的名称并无害处,而且我认为,根据过滤的是普通数组还是标记的选择,必须使用不同的名称实际上是令人困惑的。