您好我有一个关于克隆表格的问题。
我想过滤掉一些特定的结果并输出这些结果。 让我用HTML代码更好地解释自己:
<table class="table table-striped" id="ProfileList2">
<tbody>
<tr>
<td>21</td>
<td>2014-02-28 21:12:12</td>
<td>20</td>
<td>one</td>
<td>166</td>
</tr>
<tr>
<td>22</td>
<td>2014-03-01 14:04:35</td>
<td>20</td>
<td>one</td>
<td>0</td>
</tr>
<tr>
<td>23</td>
<td>2014-03-03 15:22:56</td>
<td>20</td>
<td>one</td>
<td>21</td>
</tr>
<tr>
<td>24</td>
<td>2014-03-03 17:15:56</td>
<td>20</td>
<td>one</td>
<td>21</td>
</tr>
<tr>
<td>25</td>
<td>2014-03-03 17:50:49</td>
<td>20</td>
<td>one</td>
<td>0</td>
</tr>
<tr>
<td>26</td>
<td>2014-03-05 17:33:42</td>
<td>20</td>
<td>one</td>
<td>24</td>
</tr>
</tbody>
</table>
<p class="result"></p>
在我的Javascript中,我想过滤掉上一个<td>
或每个<tr>
值0内的所有结果。
var $mainTable = $("#ProfileList2");
var $training = $mainTable.clone("tr td:nth-child(5):not(:contains('0'))");
$('p').append($training);
此代码将克隆直接副本而不进行任何过滤。
如果我将clone
函数更改为,例如:find
函数,它将仅返回表数据:166 21 21 24.
是否有任何可用的函数将返回整个表行而不是仅返回表数据?
答案 0 :(得分:2)
好吧,你可以复制整件事,然后过滤掉你不喜欢的东西,那怎么样?
var copy = $("#ProfileList2").clone();
$('p').append(copy);
copy.find("tr td:nth-child(5):contains('0')").parent().remove();
请注意,拥有多个具有相同ID的元素并不是一个好主意。
答案 1 :(得分:2)
要抓取表格行,请更改此内容:
$mainTable.find("tr td:nth-child(5):not(:contains('0'))")
......对此:
$mainTable.find("tr td:nth-child(5):not(:contains('0'))").parent()
另请注意,根据规范,paragraph
元素不能包含table
元素。 (尽管大多数浏览器都允许这样做。)将其更改为div
会更好。
的那些
相反,您可以过滤以仅排除等于&#34; 0&#34;:
的单元格$mainTable
.find("tr td:nth-child(5)")
.filter(function() {return $(this).text() != '0';})
.parent();