jQuery正在更改我的HTML

jQuery正在更改我的HTML,jquery,Jquery,我试图在特定元素后插入一个HTML字符串。但是jQuery会更改HTML代码 这是我的代码: $(".poDetails") .find("tr") .eq(14).after('</table><div style="page-break-after: always;"></div><table>'); $(“.poDetails”) .find(“tr”) .eq(14).在('')之后; 但是jQuery插入: <d

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

这是我的代码:

$(".poDetails")
    .find("tr")
    .eq(14).after('</table><div style="page-break-after: always;"></div><table>');
$(“.poDetails”)
.find(“tr”)
.eq(14).在('')之后;
但是jQuery插入:

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

你知道怎么预防吗?O怎么了

谢谢

埃德加

更新----

这是完整的代码:

    <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>

文本
文本
文本
文本
n次。。。
这就是我想做的:

<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>

文本
文本
文本
//这就是我要插入的内容。在tr编号14之后(假设这是14 tr)
文本

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

您遇到的问题是,对html元素使用
$(“…”)
格式实际上创建了元素。因此,使用您拥有的代码,它尝试创建您指定的所有元素-这与尝试将原始html注入文档的方式不同

您想要做的是让jQuery插入您指定的html,而不是以任何方式解释它。

您可以使用或实际移动页面中的DOM元素:

$(".poDetails tr:gt(13)").wrap("<table/>").insertAfter( $(".poDetails"));
$(".poDetails").after("<div style='page-break-after: always;'></div>");
$(“.poDetails tr:gt(13)”).wrap(“”)。insertAfter($(“.poDetails”);
美元(“.poDetails”)。在(“”)之后;
这将选择
.poDetails
中索引大于13的tr元素,将它们包装在表中,并将它们移动到
表.poDetails
之后

然后在两个表之间插入分页符div


当您传入已选择的jQuery对象时,
.after
方法将移动它们,而不是克隆或创建它们。(同样适用于
.insertAfter
.before
.insertBefore

这里是修改过的指令

var your_data = 'what ever you want to put';
$(".poDetails tr").eq(14).after(your_data);

首先使用有效的HTML,你就不会有这个问题。这是因为
不被视为有效。这是一个结束标记。jQuery然后解析正确打开和关闭的
,以及
,假设它是一个自动关闭标记。@Brad-可以缩写为:“您的HTML无效。”让我们尽量少用否定的语气@布拉德-不要特别挑剔你。我也很内疚,我最近决定,如果我感觉到一些消极的东西,我会号召人们出来。我并不完美,我希望得到同样的待遇,但让我们让编程成为一个更受欢迎的主题吧!不正确,请看我的答案-HTML是完全有效的,因为是顺序。问题是jQuery正在解释html并将其转换为
createElement()
调用-第一个关闭表被忽略,最后一个表被自动关闭以确保完整性。这是有意义的…唯一的问题是我需要在TR之后插入代码,但是如果我使用.html(),它将替换TR的内容。使用需要附加到的HTML选择包含元素,然后执行类似于
$(this.HTML($(this.HTML()+“…extra HTML…”)
的操作。这是一个不错的开始,代码是有效的。如果您一生中从未接触过jQuery,为什么要回答jQuery问题?因为代码片段只是解释了它自己。此外,如果作者从一开始就给出了他的HTML的其余部分,我就会知道他在干什么。