【问题标题】:Add select object dynamically to table将选择对象动态添加到表中
【发布时间】:2013-07-24 20:11:09
【问题描述】:

我正在尝试生成两个下拉列表(元素)并将它们作为新行附加到表中。

这两个列表是通过读取已经存在的选择元素创建的。

var sfp_opt = document.getElementById('sfp_opt');
var sfps = [];
for (var i = 0; i < sfp_opt.children.length; ++i) {
    var child = sfp_opt.children[i];
    if (child.tagName == 'OPTION') sfps.push(child.value);
}
counter += 1;
var s1 = $("<select></select>");
s1.id = 'SfpSelId' + counter;
s1.name = 'SfpSelName' + counter;

for(var val in sfps) {
    $("<option />", {value: val, text: sfps[val]}).appendTo(s1);
}

同样,我正在创建另一个名为 s2 的选择元素。 我想将这两个列表附加到单独的&lt;td&gt; 但同一行中,即&lt;tr&gt;。 所以我尝试了这些方法:

1) $("#sfp_det tbody").append('&lt;tr&gt;&lt;td&gt;'+s1+'&lt;/td&gt;&lt;td&gt;'+s2+'&lt;/td&gt;&lt;/tr&gt;');

而且不正确,这在 UI.s1.val() 上显示为 [object Object] 也无济于事。

2) 我可以使用 .wrap() 函数。这适用于一个列表。

$("#sfp_det tbody").append($(s1).wrap('<tr><td></td></tr>'));

我的问题是如何以类似的方式附加两个列表,以便以与&lt;table&gt;&lt;tr&gt;&lt;td&gt;list1(s1)&lt;/td&gt;&lt;td&gt;list2(s2)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; 等效的格式获取它,其中 s1 和 s2 是下拉列表或选择元素?是否可以使用 .wrap() 来做到这一点? 如果没有,任何人都可以建议我正确的语法来完成这项工作吗?

【问题讨论】:

  • 如果我理解正确,你可以使用wrapAll。
  • 如何使用它?我已经尝试过了,但它不起作用:$(s1).wrap('&lt;td class="a1"/&gt;');$(s2).wrap('&lt;td class="a1"/&gt;'); $("#sfp_det tbody").append($('.a1').wrapAll('&lt;tr&gt;&lt;/tr&gt;'));我在这里做错了吗?
  • 我更新了我的答案(js链接)。
  • 非常感谢。这行得通:)

标签: javascript jquery html


【解决方案1】:

你可以这样使用:

    var select1 = $('<select>');
    var select2 = $('<select>');

    wrapWithTd(select1).add(wrapWithTd(select2)).wrapAll('<tr>');        

    $('table tbody').append(select1.parents('tr'));

    function wrapWithTd(el) {
        el.wrap('<td>');
        return el.parent();
    }

参见: http://jsfiddle.net/inser/c36VT/

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多