Javascript 如何将jQuery对象转换为JS数组?

Javascript 如何将jQuery对象转换为JS数组?,javascript,jquery,html,Javascript,Jquery,Html,这是我的旧代码: checkboxes = document.getElementsByName('foo'); 如您所知,复选框将是一个数组。现在我需要限制选择范围。这是我的新代码: checkboxes = $('.myclass input[name=foo]'); 但在本例中,复选框不再是数组,而是jQuery对象。如何使其与getElementsByName('foo')的结果相同 请注意,$('.myclass输入[name=foo]')[0]也不起作用。您可以使用.map()

这是我的旧代码:

checkboxes = document.getElementsByName('foo');
如您所知,
复选框将是一个数组。现在我需要限制选择范围。这是我的新代码:

checkboxes = $('.myclass input[name=foo]');
但在本例中,
复选框
不再是数组,而是jQuery对象。如何使其与
getElementsByName('foo')
的结果相同


请注意,
$('.myclass输入[name=foo]')[0]
也不起作用。

您可以使用
.map()
并创建一个
getElementsByName()
返回的底层DOM数组

checkboxes  = $('.myclass input[name=foo]').map(function(){ return this;}).get();
我推荐@Charlie


您不需要转换为节点元素数组。将您的函数更改为

function toggle(source, target) {
    $(target).find('input[name=foo]').prop('checked', source.checked);
}
用法

试一试

用这个

var checked = [];
$.each($("input[name='foo']:checked"), function(){
checked.push($(this). val());
});

Charlie已经指出jQuery对象有一个
toArray()
函数。我想那会有用的。还值得注意的是,还有一个
.makeArray()
函数,用于将类似数组的对象转换为本机JavaScript数组

document.querySelectorAll(“input[name=foo]”

通过
$('selector')[0]
从jquery对象获取javascript对象应该可以工作。请参阅此链接中的答案 我怀疑您的选择器是上述方法不起作用的原因。将双引号添加到名称值将使其正常工作:

checkboxes = $('.myclass input[name="foo"]');

确保所有的
复选框都位于类为
myclass
的容器中。否则,
$('.myclass input[name=foo]')[0]
肯定会起作用。@RohanKumar实际上我还有一些复选框在
.myclass
元素之外,我不想选择它们。这就是为什么我尝试使用
$('.myclass输入[name=foo]')
而不是
document.getElementsByName('foo')
。无论如何,我的问题是完全不同的。
.myclass
也是输入吗?你能用html显示你的相关代码来解决你的问题吗。您也可以为此创建一个代码段。此外,请检查您的页面中是否包含了jquery版本。这是事实,因此每个开发人员都一定会从该网站学习。你有很多方法可以优化甚至以最短的方式完成一项工作。你能推荐一个比你名声小得多的人的答案真是太好了。@Shafizadeh,SO的名声毫无意义。很明显,他给出了一个更好的答案,我完全忘记了这个函数
var checked = [];
$.each($("input[name='foo']:checked"), function(){
checked.push($(this). val());
});
checkboxes = $('.myclass input[name="foo"]');