0

2 つのドロップダウン リスト (要素) を生成し、それらを新しい行としてテーブルに追加しようとしています。

これら 2 つのリストは、既存の 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 要素をもう 1 つ作成しています。<td>これらの2つのリストを別々の同じ行に追加したい<tr>. だから私はこれらの方法を試しました:

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

そして、これが UI.s1.val() の [object Object] として表示されるのも間違っていますが、これも役に立ちません。

2) .wrap() 関数を使用できます。これは 1 つのリストに対して機能します。

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

私の質問は、2 つのリストを同様に追加して<table><tr><td>list1(s1)</td><td>list2(s2)</td></tr></table>、s1 と s2 がドロップダウン リストまたは選択要素である場所と同等の形式で取得するにはどうすればよいかということです。.wrap() を使用してそれを行うことは可能ですか? そうでない場合は、これを行うための正しい構文を教えてください。

4

1 に答える 1

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/

于 2013-07-24T12:11:09.643 に答える