我有table
个th
个元素,每个元素都有一个唯一值。
我想附加一个td
,将td
值与th
值相匹配,并将其附加到相同的订单下。
我尝试了这段代码,但它将数据附加在同一th
内!我希望新td
行中的tr
。
$("<td>" + data[i][0].counter + "</td>").insertAfter("#datatable th[value='"+data[i][d].orderStatus+"']").trigger("create");
答案 0 :(得分:2)
$("<td>" + data[i][0].counter + "</td>")
.insertAfter("#datatable th[value='"+data[i][d].orderStatus+"']")
.trigger("create");
我假设所有这一切都在一个循环中出现并且有了这个假设,这就是我将要解决的问题。首先,我将从头开始逐步介绍您的代码,以帮助您了解一些事情。
$(&#34;&#34; + data [i] [0] .counter +&#34;&#34;)
由于可能或可能不知道,jquery中的$("x")
等同于使用CSS选择器。例如,如果我想将具有<div>
类的所有.example-div
元素设置为带有jquery的黑色背景 - 我可以使用以下内容进行设置:
<div class="example-div">Hello, World!</div>
<script>
$('.example-div').css({"background-color":"#000000"});
/* OR if I wanted to set all divs to have a black background. */
$('div').css({"background-color":"#000000"});
</script>
在选择器中放置带<>
的物理标签很可能会导致问题。首先,您必须选择要与之交互的元素( s )。在您的情况下,以下内容可能会根据您的需要而有效。
$("#datatable th[value='"+data[i][d].orderStatus+"']")
另外,看看我对选择器所做的更改。我在>
之后移除了#datatable
。大于字符(>
)选择直接子项,而<th>
不是<table id="datatable">
的子项。它是<tr>
的孩子,然后是<thead>
的孩子,如下例所示:(<table><thead><tr><th>
)这将起作用的实例如下:
$("#datatable > thead > tr > th")
现在代码的下一部分:
InsertAfter(&#34; #datatable th [value =&#39;&#34; + data [i] [d] .orderStatus +&#34;&#39;]&#34;)
通过查看你写这篇文章的意思我明白了。您希望在包含值"<td>" + data[i][0].counter + "<td>"
的{{1}}标记之后插入<th>
。你有效地解决了这些问题,因为你试图在html之后插入选择器。这是应该工作的内容:
data[i][d].orderStatus
注意:请注意,我使用$("#datatable th[value='"+data[i][d].orderStatus+"']").after("<td>" + data[i][0].counter + "</td>");
代替after
,这是无关紧要的。
.after()和.insertAfter()方法执行相同的任务。 [(After&amp; InsertAfter)] [1] [1]:http://api.jquery.com/insertafter/
我不确定您尝试使用insertAfter
触发哪些事件,但如果仍有必要,您也可以将其链接到最后。
create