Ich möchte in der Lage sein, einen DOM-Knoten (ein LI) in einem Contenteditable DIV mit Jquery auf die nächst höhere UL "verschieben". So in den folgenden ...Verschieben Sie LI um eine Ebene in verschachtelten UL mit JQuery
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3
<ul>
<li>item A</li>
<li>item B</li>
<li>item C</li>
</ul>
</li>
</ul>
Ich möchte in der Lage sein, Artikel B zu bewegen, um ein Level zu dem UL enthält Artikel 1,2 und 3. Dies ist der aktuelle Code, der nicht für funktioniert welchem Grund auch immer (alle seine Tastenkombination basiert, je nachdem, wo sich der Cursor bei der Ausführung ist, daher der getSelection() -Strategie):
den aktuellen Knoten wählen ...
var $current_node = document.getSelection().anchorNode.parentElement;
„move“ den aktuellen Knoten zum zweiten Elternteil UL ([0] ist der unmittelbare UL, in dem wir bereits sind) ...
$($current_node).parents("ul")[1].append($current_node);
Leider sind die Konsole meldet diesen Fehler ...
Uncaught Typeerror:. $ (...) Eltern (...) [1] .append ist keine Funktion
Was fehlt mir? Ich habe das Gefühl, dass ich den Unterschied zwischen einem JQuery-Objekt und einem mit Javascript ausgewählten DOM-Element nicht verstehe. Ich musste mir den Kopf zerbrechen, um herauszufinden, dass $current_node
in $()
verpackt werden musste, um Zugriff auf .parent()
zu haben, aber ich denke, dass ich immer noch auf etwas ziemlich Grundlegendem bin. Vielen Dank!
Edit: Ich habe die HTML-Struktur falsch gelesen, ist das 'item 3' und' li' mit einem 'ul'? – Stefan
[#] bricht ein Element aus dem jQuery-Objekt, das es enthält, ab. append ist eine jQuery-Funktion, auf die Sie nicht mehr zugreifen. Verwenden Sie in diesem Fall eq (#) anstelle von [#], um ein jQuery-Objekt zu erhalten. Dies ist der Grund für Ihren Uncaught TypeError. Es sind vielleicht nicht alle deine Probleme. – Taplar
Ich weiß, es sieht wierd @HenryDev, aber die Struktur ist genau für eine verschachtelte UL-Liste. Check out: http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_lists2 – Hank