在jquery对象的集合上使用underscore.js列表函数

GSt*_*Sto 6 javascript jquery underscore.js

我正在使用一个同时使用jQuery和underscore.js的应用程序.我希望能够使用一些下划线的迭代器函数,例如any()all()jQuery对象的集合.有没有办法做到这一点?我想做类似以下的事情:

checkboxes = $("input[type=checkbox]");
_.filter(checkboxes, function(box) {
    return box.is(":checked");
});
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'is'
Run Code Online (Sandbox Code Playgroud)

所以我假设在这种情况下框不像jQuery对象.

Jos*_*ber 13

你必须包装box在jQuery中:

checkboxes = $("input[type=checkbox]");
checkboxes = _.filter(checkboxes, function(box) {
    return $(box).is(":checked");
});
Run Code Online (Sandbox Code Playgroud)

此外,您可以只使用本机,而不是为集合中的每个元素创建一个新对象box.checked:

checkboxes = $("input[type=checkbox]");
checkboxes = _.filter(checkboxes, function(box) {
    return box.checked;
});
Run Code Online (Sandbox Code Playgroud)

旁注: jQuery有自己的过滤方法:

checkboxes = $("input[type=checkbox]").filter(function() {
    return $(this).is(":checked");
});
Run Code Online (Sandbox Code Playgroud)

此外,在您的示例中 - 您确定必须过滤吗?您可以像使用选择器一样轻松地使用它:

checkboxes = $("input[type=checkbox]:checked")
Run Code Online (Sandbox Code Playgroud)