为什么在推送到阵列时会得到空对象?

时间:2016-10-19 06:14:07

标签: javascript jquery arrays json

我有以下代码段:

var options = [];
$("tr.mks-option-row").each(function (row) {
    options.push({
        Id: $(row).data("option-id"),
        CategoryId: $(row).data("category-id"),
        Value: $(row).data("option-text")
    });
});

其中.mks-option-row是表中所有行的选择器。该表包含几个数据元素,我也在tr本身作为数据属性重复。

但是,当完成此代码段时,options数组包含n个空对象文字。如果表中有4行,则数组包含[{},{},{},{}]

我在这里做错了什么? (我也尝试使用引用的标识符,结果没有区别)

1 个答案:

答案 0 :(得分:3)

row作为回调函数的行列表中的元素索引传递,您需要使用this才能将该行作为jquery对象获取:

var options = [];
$("tr.mks-option-row").each(function () {
    options.push({
        Id: $(this).data("option-id"),
        CategoryId: $(this).data("category-id"),
        Value: $(this).data("option-text")
    });
});

<强>更新

更具体地说,$.each期待function(index, element)。这是一个选择;忽略第一个论点是另一个。

$("tr.mks-option-row").each(function (row, element) {
     options.push({
         Id: $(element).data("option-id"),
         CategoryId: $(element).data("category-id"),
         Value: $(element).data("option-text")
     });
});