首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jQuery将两个select元素附加到表行?

如何使用jQuery将两个select元素附加到表行?
EN

Stack Overflow用户
提问于 2014-07-06 12:20:34
回答 3查看 2.4K关注 0票数 1

我想根据指定的数组创建一个动态表,如下所示:

我的代码:

代码语言:javascript
复制
<table id="selectTable" class="m-table">
    <thead>
        <tr>
            <th>Products</th>
            <th>Range</th>
        </tr>
    </thead>
</table>

JQUERY

代码语言:javascript
复制
function drawTable(data) {

var dateTable = $('#selectTable');
selectEl  = $('<select>'),
    selectVal = [
        {val : 1, text: '1'},
        {val : 2, text: '2'},
        {val : 3, text: '3'},
        {val : 4, text: '4'},
        {val : 5, text: '5'}
    ];

$(selectVal).each(function() {
    selectEl
    .append($('<option>')
            .attr('value',this.val)
            .text(this.text));
});

dateTable.children('tbody').empty();

$.each(data,function(k,v){

    var row     = $('<tr />',{'class':'row-'+k});
    dateTable.append(row);
    row.append($('<td />').append(v));
    row.append($('<td />').append(selectEl + ' ' + selectEl ));

});
}

var a = ['Product-1','Product-2','Product-3','Product-4','Product-5'];


drawTable(a);

表和selectbox将动态创建,并附加到表的每一行。我该怎么做?

http://jsfiddle.net/dsjLT/2/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-06 13:21:59

我在每一行中添加了两个选择框,并进行了以下编辑;

代码语言:javascript
复制
dateTable.append(row);
row.append($('<td />').append(v));
row.append($('<td />').append(selectEl));
row.children('td:nth-child(2)').append(selectEl.clone());

http://jsfiddle.net/dsjLT/6/

票数 0
EN

Stack Overflow用户

发布于 2014-07-06 12:34:41

不确定您能否以这种方式重用selectEl。我会尝试为每一行重新创建它。这是可行的(尽管它需要清理):

代码语言:javascript
复制
function drawTable(data) {

  var dateTable = $('#selectTable');
  dateTable.children('tbody').empty();

  $.each(data,function(k,v){

    var selectEl  = $('<select>'),
      selectVal = [
        {val : 1, text: '1'},
        {val : 2, text: '2'},
        {val : 3, text: '3'},
        {val : 4, text: '4'},
        {val : 5, text: '5'}
      ];

      $(selectVal).each(function() {
        selectEl
       .append($('<option>')
               .attr('value',this.val)
               .text(this.text));
      });

      var row     = $('<tr />',{'class':'row-'+k});
      dateTable.append(row);
      row.append($('<td />').append(v));
      row.append($('<td />').append(selectEl));

   });
}

var a = ['Product-1','Product-2','Product-3','Product-4','Product-5'];

drawTable(a);
票数 3
EN

Stack Overflow用户

发布于 2014-07-06 12:43:31

问题是$('select')是同一个实例,因此只能追加到一行。您需要在附加到行之前进行克隆。

请参阅http://jsfiddle.net/hutingung/dsjLT/3/

代码片段

代码语言:javascript
复制
$.each(data,function(k,v){

    var row     = $('<tr />',{'class':'row-'+k});
    dateTable.append(row);
    row.append($('<td />').append(v));
    //you are refer to same instance of selectEL
    //row.append($('<td />').append(selectEl));
    //Use clone to append
    selectEl.clone().appendTo(row);

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24595750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档