ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
392
392
EMPFEHLEN
-
28.09.11 09:39 #1
- Registriert seit
- Sep 2011
- Beiträge
- 3
Hi,
ich habe ein Problem mit der sortable Funktion von jQuery, und zwar habe ich ein mehrdimensionales Array mit 3 ebenen, welches mit PHP dynamisch in einer aufklappbaren bzw. verschachtelten Baumansicht ausgegeben wird.
das ordnen der obersten ebene klappt soweit.
Man kann sich das ganze so vorstellen:- element 1 ebene 1
- element 1 ebene 2
- element 1 ebene 3
- element 1 ebene 2
- element 2 ebene 1
- element 2 ebene 2
- element 2 ebene 3
- element 2 ebene 2
Ich kann also schon das Element 1 von Ebene 1 inkl. alle unteren Ebenen davon per Drag & Drop verschieben. (man kann also Element 1 von Ebene 1 unter Element 2 Ebene 1 verschieben -> nicht so, dass es ein unterelement ist, sondern dass aus Element 1 Ebene 1 -> Element 2 Ebene 1 wird).
Mein Problem ist, dass die unterelemente zwar schon verschoben werden, allerdings springen sie immer wieder auf ihre ursprungsposition zurück -> also praktisch ein drag ohne drop
Was jetzt also noch fehlt ist eine verschiebung der unterelemente
Die Elemente sollen untereinander nur auf ihrer eigenen Ebene verschoben werden können d.h. ich darf kein Element von Ebene 3 auf Ebene 2 oder 1 verschieben können.
Da ich leider nicht wirklich viel Ahnung habe von JavaScript/jQuery weiss ich nicht genau, wie ich das angehen soll.
hier mal der Quellcode der sortable Funktion:
Ich Hoffe das ist halbwegs verständlich, was ich geschrieben habe und was ich meinePHP-Code:<script type="text/javascript">
$(function()
{
$("#list ul").sortable({ axis: 'y', delay: 200, opacity: 0.7, cursor: 'move', update:
function()
{
var order = $(this).sortable("serialize") + '&update=update';
$.post("updateList.php", order,
function(theResponse)
{
$("#response").html(theResponse);
$("#response").slideDown('fast');
slideout();
}
);
}
});
}
);
</script>
-
Dein Code Funktioniert bei mir wie gewünscht.
Oder willst du, dass man auch Listen übergreifend sortieren kann. Also "element 1 ebene 3" mit "element 2 ebene 3"?HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Sortable</title> </head> <body> <div id="list"> <ul> <li> More <ul> <li> Foo <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Bar <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Baz <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> </ul> </li> <li> Bacon <ul> <li> Foo <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Bar <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Baz <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> </ul> </li> <li> Strips <ul> <li> Foo <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Bar <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Baz <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> </ul> </li> </ul> </div> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script> <script type="text/javascript"> /* <![CDATA[ */ $(function() { $("#list ul").sortable({ axis: 'y', delay: 200, opacity: 0.7, cursor: 'move'}); }); /* ]]> */ </script> </body> </html>
EDIT: Hier mal aufs wesentliche beschränkt, falls du alles auf der gleichen Ebene willst
Code javascript:1 2 3 4 5 6
$("#list > ul") .sortable({ connectWith: '#list > ul' }) .find('> li > ul') .sortable({ connectWith: '#list > ul > li > ul' }) .find('> li > ul') .sortable({ connectWith: '#list > ul > li > ul > li > ul' });
Geändert von CPoly (28.09.11 um 10:25 Uhr)
-
28.09.11 11:20 #3
- Registriert seit
- Sep 2011
- Beiträge
- 3
Ich glaub ich hab mich oben nicht richtig ausgedrückt .. Sorry
also ich habe auf Ebene 3 mehrere Elemente -> so, wie es bei dir ist
jetzt sollen nur die Elemente "Hans" "Gerd" und "Olaf" untereinander verschoben werden können und nicht zu "Hans_1" oder "Hans_2" sowie deren übergeordneten Elemente.HTML-Code:<ul> <li> More <ul> <li> Foo <ul> <li>Hans</li> <li>Gerd</li> <li>Olaf</li> </ul> </li> <li> Bar <ul> <li>Hans_1</li> <li>Gerd_1</li> <li>Olaf_1</li> </ul> </li> <li> Baz <ul> <li>Hans_2</li> <li>Gerd_2</li> <li>Olaf_2</li> </ul> </li> </ul> </li> </ul>
zur Verständlichkeit: das ganze dient einer Menüstruktur um verschiedene Elemente anordnen zu können.
-
Kopiere mal mein HTML in ein leeres Dokument (ohne mein EDIT). Das macht exakt das. Sortable beschränkt sich standardmäßig auf die Elemente in der gleichen Liste. Also kannst du Hans nicht mit Hans_1 mischen.
-
30.09.11 08:36 #5
- Registriert seit
- Sep 2011
- Beiträge
- 3
in der tat.. es funktioniert... ich hatte nur ein paar dumme fehler in meinen schleifen!
aber trotzdem danke!
Ähnliche Themen
-
jQuery: sortable
Von Maik20 im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 25.05.11, 22:26 -
[jQuery] sortable
Von grünes-huhn im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 14.06.10, 18:18 -
[jQuery] sortable - serialize
Von mgraf im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 18.05.10, 15:36 -
jQuery Sortable und TDs
Von NM78 im Forum Javascript & AjaxAntworten: 9Letzter Beitrag: 06.07.09, 13:19 -
Sortable mit jquery
Von paulee im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 01.01.08, 21:53





Zitieren

Login





