我对这种行为感到很困惑。任何帮助将不胜感激。我有一个简单的表,虽然使用相同的JQuery调用它的行为有所不同。
<table class="PrintTable">
<tr>
<td>
<table>
<thead>
<tr><th>Type Of Transaction</th></tr>
</thead>
<tbody>
<tr>
<td>Name</td>
</tr>
<tr>
<td>Age</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<thead>
<tr><th>2006</th></tr>
</thead>
<tbody>
<tr>
<td>Andi</td>
</tr>
<tr>
<td>25</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<thead>
<tr><th>2007</th></tr>
</thead>
<tbody>
<tr>
<td>tom</td>
</tr>
<tr>
<td>26</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table><script>$('table.PrintTable >tbody>tr>td').slice(-2).remove();</script>
上面的JQuery删除了预期的最后两列。
但是,如果我将代码更改为: -
function getBody(element)
{
var divider=2;
var originalTable=element.clone();
var newTable = ($(originalTable).children('tbody').children('tr').children('td')).slice(-1).remove();
return $('<div>').append(newTable).html();
}
getBoby($('table.PrintTable'))
以上代码仅显示最后一列。为什么会这样?我跳,我能够正确地提到我的问题。任何帮助将不胜感激
答案 0 :(得分:2)
根据您的评论,您似乎想要原件的副本,但没有最后两列。
这样做:
function getBody(element) {
var divider=2;
var newTable = element.clone();
newTable.children('tbody').children('tr').children('td').slice(-2).remove();
return $('<div>').append(newTable).html();
}
getBody($('table.PrintTable'));
在您的代码中,newTable
引用了您切片和删除的克隆部分。不是主要的克隆表。
答案 1 :(得分:0)
简短的回答是因为您在slide(-1)
函数中使用getBody()
,在第一次jQuery调用中使用slice(-2)
。
slice(-2)返回2列,slice(-1)只返回一列。
此外,您无需多次致电children()
,只需使用$element.find('tbody > tr > td');