使用after() jquery返回带有其他添加元素的元素

Return element with other added element using after() jquery

本文关键字:元素 其他 添加 返回 after jquery 使用      更新时间:2023-09-26

我需要使用after()函数添加一些tr元素到jQuery中的tr变量,然后返回整个元素。问题是,如果我返回tr var,我只得到tr var,而不是与after()添加的元素。下面是函数:

    var tr = $('<tr/>');
    $('input[name^="lcs_cognome[' + num_sede +']"]').each(function(index, value){
    var attr = $(this).attr('name').split('[');
    var lcs_num = '';
    for(var i=0; i<attr[2].length-1; i++)
        lcs_num += '' + attr[2][i];
    if(index == 0)
        tr.append($('<td/>').text($('input[name="lcs_nome[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_cognome[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_sede_consegna[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_indirizzo_consegna[' + num_sede +'][' + lcs_num + ']"]').val() + ' ' + $('input[name="lcs_n_civico_consegna[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_telefono_1[' + num_sede +'][' + lcs_num + ']"]').val()));
    else
        tr.after($('<tr/>').append($('<td/>').text($('input[name="lcs_nome[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_cognome[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_sede_consegna[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_indirizzo_consegna[' + num_sede +'][' + lcs_num + ']"]').val() + ' ' +$('input[name="lcs_n_civico_consegna[' + num_sede +'][' + lcs_num + ']"]').val()))
          .append($('<td/>').text($('input[name="lcs_telefono_1[' + num_sede +'][' + lcs_num + ']"]').val())));
  });
  return tr;

我也尝试用insertAfter()替换after(),但它没有工作

您必须使用insertAfter,但您需要以另一种方式返回值:

                return  $('<tr/>')
                        .append(
                            $('<td/>').text($('input[name="lcs_nome[' + num_sede +'][' + lcs_num + ']"]').val())
                        )
                        .append(
                            $('<td/>').text($('input[name="lcs_cognome[' + num_sede +'][' + lcs_num + ']"]').val())
                        )
                        .append(
                            $('<td/>').text($('input[name="lcs_sede_consegna[' + num_sede +'][' + lcs_num + ']"]').val())
                        )
                        .append(
                            $('<td/>').text($('input[name="lcs_indirizzo_consegna[' + num_sede +'][' + lcs_num + ']"]').val() + ' ' + $('input[name="lcs_n_civico_consegna[' + num_sede +'][' + lcs_num + ']"]').val())
                        )
                        .append(
                            $('<td/>').text($('input[name="lcs_telefono_1[' + num_sede +'][' + lcs_num + ']"]').val())
                        )
                    );
            }).insertAfter(tr)

最后不返回tr,因为你返回的是$('tr')对象。

你有更多的信息关于它的工作原理:https://stackoverflow.com/a/11114453/5035890