表JQuery切片删除

时间:2011-01-19 16:27:54

标签: jquery html-table slice

我对这种行为感到很困惑。任何帮助将不胜感激。我有一个简单的表,虽然使用相同的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'))

以上代码仅显示最后一列。为什么会这样?我跳,我能够正确地提到我的问题。任何帮助将不胜感激

2 个答案:

答案 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');