JQuery将td附加到特定的th

时间:2017-05-17 13:05:59

标签: jquery html datatable append

我有tableth个元素,每个元素都有一个唯一值。

我想附加一个td,将td值与th值相匹配,并将其附加到相同的订单下。

我尝试了这段代码,但它将数据附加在同一th内!我希望新td行中的tr

  $("<td>" + data[i][0].counter + "</td>").insertAfter("#datatable th[value='"+data[i][d].orderStatus+"']").trigger("create");

1 个答案:

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