将select对象动态添加到表中

时间:2013-07-24 11:50:49

标签: javascript jquery html

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

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

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的select元素。 我想将这两个列表添加到单独的<td>但是同一行,即<tr>。 所以我尝试了这些方法:

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

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

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

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

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

1 个答案:

答案 0 :(得分: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/