/ / jQuery a créé une table imbriquée basée sur un attribut - jquery, html-table, nested

Table imbriquée créée par jQuery basée sur un attribut - jquery, html-table, imbriquée

J'ai donc posé une question très similaire hiersur les listes imbriquées en pensant que je serais en mesure d'utiliser la réponse à la fois pour créer des listes imbriquées et des tables imbriquées. Mais lorsque j'essaie de modifier le jQuery en tables imbriquées créées, cela va un peu mal. Soit il ne s'emboîte pas, soit il imbrique une table entière avec l'enfant <tr>"est sous le parent <tr> au lieu de juste l'enfant <tr>"s. Exemples de tableaux:

<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>

(Ce jQuery est basé sur du code que vzwick m'a très gracieusement aidé) Le jQuery ressemble à ceci:

$("tbody.csTR_children tr").each(function() {
probable_parent = $("tbody.csTR_parent tr#" + $(this).attr("class"));
if (probable_parent.length) {
if (!probable_parent.find("tbody").length) probable_parent.append("<tbody/>");
$(this).detach().appendTo(probable_parent.find("tbody"));
}
});

C'est le plus proche que j'obtiens et il imbrique une table entière sous chaque ligne parent (dans IE, il imbrique correctement le premier parent et l'enfant, mais le reste ne fonctionne pas), comme je l'ai dit ci-dessus. Des suggestions?

Réponses:

1 pour la réponse № 1

Vous essayez d'ajouter un tbody à un tr ce qui est tout à fait faux. UNE tbody doit être directement dans un table et vous ne pouvez pas mettre ce tableau directement dans le tr, il doit être dans un td

http://jsfiddle.net/ZDUQU/

Donc, en gros, ajoutez un tableau au premier td dans la rangée:

probable_parent.children(":first").append("<table><tbody></tbody></table>");

0 pour la réponse № 2

Regarde ça. Je pense que ça fait ce que tu veux:

$("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);
}
});

Voici un jsFiddle pour jouer avec: http://jsfiddle.net/78aXx/2/

Bob


0 pour la réponse № 3
$("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);
}
});