Autor Zpráva
iiic
Profil
Ahoj

Potřeboval bych v binárním stromu reprezentovaném seznamy ul>li nějak přesouvat položky. V jednoúrovňovém seznamu by na tom asi nic zvláštního nebylo, ale pokud se mají položky přesouvat i mezi úrovněmi je to už docela problém.

Je na to jquery komponenta… tedy určitě více, ale já našel tuhle: dynatree -> ukázka zde -> http://wwwendt.de/tech/dynatree/doc/sample-dnd2.html .

Problém je jednak, že to ovládání není příliš pohodlné a hlavně, že na mobilních zařízeních to nejde vůbec.

Dá se tohle vůbec nějak udělat, aby to bylo intuitivní a šlo to ovládat i na mobilech ? Napadlo mě něco jako odkazy reprezentované šipkami: 'v seznamu výš', 'v seznamu níž', 'o úroveň výš'… akorát tedy asi nebude žádná šipka na 'vložit do položky'.
_es
Profil
iiic:
Je na to jquery komponenta
V rámci len JS kódu na to nepotrebuješ nejakú „jQuery komponentu“, ani samotné jQuery, bohato ti postačí metóda insertBefore. Vyskúšaj si kód:
<!doctype html><meta charset="utf-8">
<ul>
<li>a
<li>b
<li><ul>
<li>1a
<li>1b
</ul>
<li>c
<li>d
</ul>
<input type=button id=btn>
<script>
var li = document.getElementsByTagName('LI'), ul = document.getElementsByTagName('UL');
document.getElementById("btn").onclick=function(){ul[1].insertBefore(li[1], li[4])};
</script>
Pokiaľ musí byť aj ovládanie presúvaním pomocou myši, tam by mohlo byť jednoduchšie stiahnuť nejaké hotové riešenie.
iiic
Profil
Díky, nejde mi úplně až tak o tu funkci, ale spíše o to, jak to udělat použitelné. Na těch mobilech prostě přetahování myší být nemůže… a dát tam ty šipky? Nahoru a dolů není problém, o úroveň výše taky ne, ale která šipka řekne umístit položku do jiné položky a jak to udělá?
_es
Profil
iiic:
Mohlo by sa to premiestňovať klikaním, no či už niekto niečo také vyrobil, neviem. Kliknutie na položku a potom kliknutie na priestor pred alebo za inú položku.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: