【问题标题】:jQuery `map` convert arrays in to `dom` elementjQuery `map` 将数组转换为 `dom` 元素
【发布时间】:2015-03-03 10:24:11
【问题描述】:

我正在循环数据,并使用来自jQuerymap 方法创建结果。循环完成后,我得到的结果是array 基于object,如下所示:

[jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1]]

但我需要基于 jQuery 的对象(常规 dom 元素)我如何从 map 输出中获取它?

我在完成循环后尝试使用get()。但抛出error。获取dom 输出的正确方法是什么?

这是我的功能:

this.tbody = this.tableData.map(function (item, index) {
    tr = $('<tr />', { id: item.ID });
    tr.append('<td><input class="selectRow" type="checkbox" /></td>');
    that.headerNames.map(function (label) {
        var newlabel = label.replace(' ', '');
        var labelData = item[newlabel];
        tr.append('<td>' + labelData + '</td>');
    });
    console.log(tr); // [tr#66, jquery: "1.11.1", constructor: function, selector: "", toArray: function, get: function…] //i require all trs became a single output
    return tr;
});

console.log(this.tbody);

【问题讨论】:

  • 基于jQuery 的对象不也是这样的数组吗?
  • 当我控制台时,我可以看到里面的element

标签: javascript jquery arrays dom


【解决方案1】:

尝试从地图处理程序返回一个 dom 对象引用,然后将数组传递给 jQuery 并尝试

var tbody = this.tableData.map(function (item, index) {
    var tr = $('<tr />', {
        id: item.ID
    });
    tr.append('<td><input class="selectRow" type="checkbox" /></td>');
    that.headerNames.map(function (label) {
        var newlabel = label.replace(' ', '');
        var labelData = item[newlabel];
        tr.append('<td>' + labelData + '</td>');
    });
    console.log(tr); // [tr#66, jquery: "1.11.1", constructor: function, selector: "", toArray: function, get: function…] //i require all trs became a single output
    return tr.get(0);
});

this.tbody = $(tbody)

演示:FiddleProblem

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2016-03-14
    • 2011-10-30
    • 2012-12-02
    相关资源
    最近更新 更多