Javascript 如何在数组中保存相同的对象类型

Javascript 如何在数组中保存相同的对象类型,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我想在数组中保存相同的对象类型 例如,当我要选中所有复选框并将值保存在数组中时: selectAllCbs: function() { var self = this; $('#' + instanceName + 'table_form input[type=checkbox]').each(function(index,cb) { if($(cb).prop('disabled') == false) {

我想在数组中保存相同的对象类型

例如,当我要选中所有复选框并将值保存在数组中时:

selectAllCbs: function() {
            var self = this;
            $('#' + instanceName + 'table_form input[type=checkbox]').each(function(index,cb) {
                if($(cb).prop('disabled') == false) {
                    $(cb).prop('checked',true);
                    console.log("Select all clicked:" + cb); //gives me [object HTMLInputElement] result
                    selected.push(cb); //save to an array
                    self.changeRowStyle(cb);
                }
            });
当我在用户单击行时使用几乎相同的代码时,我得到了不同的类型:

rowClicked: function(id) {
        var cb = $('#' + instanceName + 'cb_' + id);

        if($(cb).is(':checked')) {
            $(cb).prop('checked',false);
            selected.splice(selected.indexOf(this.value),1);
        } else {
            $(cb).prop('checked',true);
            console.log("Row clicked:" + cb); //gives me [object Object]
            selected.push(cb);
        }
        this.changeRowStyle(cb);
    },
因此,主要问题是如何在[object HTMLInputElement]类型中保存rowClicked元素

因为在第一个示例中,我可以使用选定的[I].value读取值,而在第二个示例中,我需要使用选定的[I][0].value读取值。

在单击的行中,替换:

selected.push(cb);
与:


并在rowClicked中执行相同的操作。changeRowStylecb[0]方法

可能会让您感到困惑的是在稍后阶段比较数组元素。不能比较两个JQuery对象,但可以比较两个DOM元素

JQuery将所有内容包装为JQuery对象,以便为其提供所有性感的功能。在第一批代码中存储的是DOM元素,因为在JQuery选择器方法中没有包装cb。在第二批代码中,您存储了一个JQuery选择器

为了获得第二批代码的DOM元素,只需在rowClicked函数末尾使用get方法:

this.changeRowStyle(cb.get(0));
显然,将此函数的推送参数更改为相同:

selected.push(cb.get(0));

选择所有点击:+cb…真的吗@病毒721有什么问题吗?这只是出于测试目的…已选择。推送$cb[0]@dcodesmith在selectall或单击的行中?问题是:您想保存jquery对象$cb还是DOM元素cb?这里的变量cb=$+instanceName+'cb_u2;'+id;cb是一个jquery对象,一个用jquery函数包装的DOM元素。她不需要对changeRowStyle方法执行相同的操作,因为从每个jquery方法传递的值都是一个DOM元素。它没有包装在JQuery逻辑中。@shennan在rowclicked中,他需要使用这个。changeRowStylecb[0]因为这里cb是一个JQuery对象我很抱歉,我以为你的意思是在selectAllCbs方法中更改它,它已经是一个DOM元素了。因此,我提到了每个JQuery方法。
selected.push(cb.get(0));