jQuery создал вложенную таблицу на основе атрибута - PullRequest
0 голосов
/ 04 октября 2011

Итак, я задал очень похожий вопрос вчера о вложенных списках, думая, что смогу использовать ответ как для создания вложенных списков, так и для вложенных таблиц.Но когда я пытаюсь изменить jQuery для созданных вложенных таблиц, это становится немного бесполезным.Либо он не вложен, либо вложен всю таблицу с дочерними <tr> под родительскими <tr> вместо просто дочерних <tr>.Примеры таблиц:

<table>
    <tbody>
        <tr id="10"><td>Parent 1</td></tr>
        <tr id="14"><td>Parent 2</td></tr>
    </tbody>
</table>

<table>
    <tbody>
        <tr class="10"><td>Child A</td></tr>
        <tr class="10"><td>Child B</td></tr>
        <tr Class="14"><td>Child X</td></tr>
    </tbody>
</table>

(Этот jQuery основан на коде, с которым мне очень любезно помог vzwick). JQuery выглядит так:Как показано выше, вложенная целая таблица находится под каждой родительской строкой (в IE она правильно вкладывает первого родителя и потомка, а остальные нет).Есть предложения?

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Вы пытаетесь добавить tbody к tr, что совершенно неправильно. tbody должно быть непосредственно в table, и вы не можете поместить эту таблицу непосредственно в tr, оно должно быть в td

http://jsfiddle.net/ZDUQU/

Итак, добавьте таблицу к первому td в строке:

probable_parent.children(":first").append('<table><tbody></tbody></table>');
0 голосов
/ 05 октября 2011
$('tbody.csTR_children tr').each(function() {
    probable_parent = $('#' + $(this).data('parentID'));
    if (probable_parent.length) {
        if (!probable_parent.find('tbody').length)
        $(this).detach().insertAfter(probable_parent);
    }
});
0 голосов
/ 04 октября 2011

Взгляните на это.Я думаю, что он делает то, что вы хотите:

$('table#child tr').each(function() {
    var parentId = $(this).data('parentId');
    var parent = $('#' + parentId);
    if (parent) {
        var tbody = $('tbody', parent);
        if (tbody.length == 0) {
            // need to add the table wrapper
            tbody = $('<tbody>');
            var table = $('<table>').append(tbody);
            parent.append(table);
        }
        $(this).detach().appendTo(tbody);
    }
});

Вот jsFiddle для вас, чтобы играть с: http://jsfiddle.net/78aXx/2/

Боб

...