使用ajax动态追加多个tr元素

时间:2013-04-16 14:29:34

标签: jquery html ajax

我有服务器生成的html:

<div id="invContent">
    <tbody>
        <tr>
            <td>A</td>
            <td>B</td>
            <td>C</td>
        </tr>
        <tr>
            <td>D</td>
            <td>E</td>
            <td>F</td>
        </tr>
        <tr>
            <td>G</td>
            <td>H</td>
            <td>X</td>
        </tr>
    </tbody>
</div>

和这个ajax电话:

& .ajax({
    url: path,
    datatype: "html",
    success: function (result) {
        $("#tableID>tbody").append($(result).find("#invContent").html());
    }
});

问题是tr和td标签没有被追加,只有td的内容。

如何附加这些多个tr?

2 个答案:

答案 0 :(得分:1)

您的选择器正在选择然后附加tbody元素,这可能会生成令浏览器混淆的内容(一个tbody内的多个table元素)。

尝试将success回调更改为:

$("#tableID>tbody").append($(result).find("#invContent>tbody").html());

更好的解决方案是更新服务器端代码,只返回tr元素,这样就不必在响应中进行任何选择/导航。

答案 1 :(得分:0)

我终于解决了这个问题!

我只是将tr包裹在表格标签中:

<div id="invContent">

<table>
    <tbody>
        <tr>
            <td>A</td>
            <td>B</td>
            <td>C</td>
        </tr>
        <tr>
            <td>D</td>
            <td>E</td>
            <td>F</td>
        </tr>
        <tr>
            <td>G</td>
            <td>H</td>
            <td>X</td>
        </tr>
    </tbody>
<table
</div>

success回调是:

$("#tableID>tbody").append($(result).find("#invContent>table>tbody").html());