Wie man Eltern und Eltern Eltern-id in jstree
Ich bin momentan dabei, einen jstree in meinem Programm. Jetzt bin ich in der Lage, die überprüft Knoten-id. Aber wie bekomme ich die id des parent-node-id und auch den übergeordneten parent-node-id.
Unten ist mein javascript, um die Kinder-Knoten-id.
JS:
$('#tree-container').on('changed.jstree', function (e, data) {
var i, j, r = [];
for (i = 0, j = data.selected.length; i < j; i++) {
r.push(data.instance.get_node(data.selected[i]).id.trim());
}
//alert('Selected: ' + r.join(', '));
console.log('Selected: ' + r.join(', '));
});
Hier ist mein jsfddle. Bitte werfen Sie einen Blick. http://jsfiddle.net/jjfcnho8/2/ Wenn ich wählen Kind 9, die ich bekommen kann Kind 9 id. Dann, wie bekomme ich Kind 2 und Ordner 1 id.
Jemand wissen, bitte helfen Sie mir. Ich danke Ihnen sehr!
- Schreiben Sie Ihre demo auf plunker oder etwas anderes... und check die Antwort, könnte es sein, eine doppelte
- Ich habe die Ansicht, dass die Antwort vor, aber es kann nur mir helfen, das übergeordnete node-id nur. Ich kann nicht das übergeordnete parent-Knoten-id
- Wie gesagt, bauen Sie Ihre Beispiel-code auf plunker dann können wir helfen, Sie zu erleichtern.
- Hinzufügen fiddle oder plunker demo
- Ich bin erstellen...Warten ya
- jsfiddle.net/jjfcnho8/2 Hier mein jsfiddle. Pls werfen Sie einen Blick
- Ich kann das Kind 9 id, kann aber nicht die Kind 2 und Ordner 1 id
- Aber wenn ich wählen Kind 9 und das Kind 10 ist, dann nur ich kann das Kind 2 id
- Verwenden
data.node.parents
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie die
parents
- Eigenschaft des node-Objekts erhalten Sie vondata.instance.get_node()
. Als mehrere Knoten könnte haben die gleichen Vorfahren, Sie vielleicht möchten zu vermeiden, sammeln die Duplikate. Für diese können Sie eineSet
. Dies ist nur eine Möglichkeit, Sie könnte es tun:Beachten Sie, dass dies sind der root-Knoten, die id '#'.
Hier ist die aktualisierte fiddle.
Ohne root-Knoten
Um die Liste ohne die
#
, ist es am einfachsten wenden Sie einen filter auf das Ergebnis:EcmaScript2015
Den oben genannten Skripts verwenden der Funktionen von EcmaScript2015 (ES6). Einige Editoren können highlight syntax-Fehler, wenn Sie nicht konfiguriert sind, um zu erkennen, ES6-syntax. Hier finden Sie, wie zu konfigurieren VSCode, Sublime Text, sowie WebStorm für ES6.
ES5 Alternative
In ES5 verwenden Sie ein Objekt (
acc
) zu sammeln, eindeutige id-Referenzen als Namen für die Eigenschaft. ObwohlObject.keys
ist wirklich ES6, ist es oft unterstützt, sonst ES5-Browser:Hier ist die entsprechende fiddle.
Zirkelbezüge in Daten
Sie schrieb in den Kommentaren, dass Sie versucht, dies zu tun:
Aber, dass die Daten-Struktur von übergeordneten und untergeordneten Referenzen in es, so ist es möglich, von einem Kind zu seinem übergeordneten Objekt, und von dort wieder zurück auf dem untergeordneten Objekt, ... das ist endlos. Solche Strukturen können nicht konvertiert werden um JSON. Sehen dieses Q&A für Lösungen.
TypeError: data.selected.reduce(...).delete(...) is not iterable
wenn ich die.delete('#')
Teil... bitte, jede Hilfe?.delete()
(das war eine zu schnelle Zugabe habe ich gemacht). Verwenden.filter
auf das Ergebnis statt. Siehe update in der Antwort.Verwendung von jQuery, finden Sie das parent-element von dieser Methode
oder
Dies kann erreicht werden, indem man
this.parentNode.parentNode.parentNode.id
im onclick-sogar der jstree-Objekt.Beispiel:
Getestet mit jstree v3.2 verwenden Sie eine html-Datenquelle. Ein bisschen wackelig? ja. Definitiv test nach upgrades der jstree-Bibliothek, weil, wenn die library-Entwickler ändern Sie diese Struktur der Knoten das Beispiel funktioniert nicht mehr.