Таблица JQuery срез удалить - PullRequest
0 голосов
/ 19 января 2011

Я действительно запутался в поведении. Любая помощь будет оценена по этому вопросу. У меня есть простая таблица, и она ведет себя по-разному, хотя использует один и тот же вызов 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 ]

2 голосов
/ 19 января 2011

Судя по вашему комментарию, вы хотите получить копию оригинала, но без последних двух столбцов.

Сделайте это:

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ссылался на ту часть клона, которую вы нарезали и удалили.Не основной клонированный стол.

0 голосов
/ 19 января 2011

Короткий ответ: потому что вы используете slide(-1) в функции getBody() и slice(-2) в первом вызове jQuery.slice (-2) возвращает 2 столбца, а slice (-1) возвращает только один столбец.

Кроме того, вам не нужно вызывать children() несколько раз, вы можете просто использовать $element.find('tbody > tr > td');

...