0

我试图在特定元素之后插入一个 HTML 字符串。但是 jQuery 改变了 HTML 代码。

这是我的代码:

$(".poDetails")
    .find("tr")
    .eq(14).after('</table><div style="page-break-after: always;"></div><table>');

但是 jQuery 插入:

<div style="page-break-after: always;"></div><table></table>

知道如何防止这种情况吗?有什么问题吗?

谢谢!

埃德加。

更新 - -

这是完整的代码:

    <table class="poDetails">
    <tr>
        <td>text</td>
    </tr>
    <tr>
        <td>text</td>
    </tr>
    <tr>
        <td>text</td>
    </tr>
    <tr>
        <td>text</td>
    </tr>

    n times...

</table>

这就是我想要做的:

<table class="poDetails">
    <tr>
        <td>text</td>
    </tr>
    <tr>
        <td>text</td>
    </tr>
    <tr>
        <td>text</td>
    </tr>

    //this is what i'm inserting. after tr number 14 (just assume that this is the 14 tr)
</table>
    <div style="page-break-after: always;"></div>
<table>

    <tr>
        <td>text</td>
    </tr> 

</table>
4

4 回答 4

0

You can use .after() or .insertAfter() to actually move DOM elements around the page:

$(".poDetails tr:gt(13)").wrap("<table/>").insertAfter( $(".poDetails"));
$(".poDetails").after("<div style='page-break-after: always;'></div>");

This will select the tr elements in .poDetails that have an index greater than 13, wrap them in a table, and move them to be after table.poDetails.

Then it inserts your page break div between the two tables.

When you pass in a jQuery object(s) that have been selected, the .after method will move them instead of cloning or creating it. (Also true for .insertAfter, .before, and .insertBefore.)

于 2012-04-12T03:25:01.677 回答
0

这是修改后的指令

var your_data = 'what ever you want to put';
$(".poDetails tr").eq(14).after(your_data);
于 2012-04-12T06:45:54.263 回答
0

问题是您只是在代码中交换了表格的开始和结束标记。我一生中从未接触过 jQuery 来回答这个问题,只是说在指责 API 和库做你意想不到的事情之前,你应该更加注意自己的代码正确性;)

于 2012-04-12T01:09:39.513 回答
0

您遇到的问题是使用$('...')带有 html 元素的格式实际上会创建元素。因此,使用您拥有的代码,它会尝试创建您指定的所有元素 - 这尝试将原始 html 注入文档不同!

您想要做.html('</table><div style="page-break-after: always;"></div><table>')的是让 jQuery 按原样插入您指定的 html,而不以任何方式解释它。

于 2012-04-12T01:23:44.057 回答