Изменение порядка пунктов в меню
Привет, может кто-нибудь подсказать как сделать на jquery такой механизм?
Имеем меню с несколькими пунктами: -Главная -Раздел 1 -Раздел 2 и т.д. При клике, например, на "Раздел 1", он перемещается вверх в списке меню, т.е. изменяется порядок меню: -Раздел 1 -Главная -Раздел 2 В jquery не шарю, помогите! |
vyrtime, ты хоть бы тестовый пример своего "меню" сделал...
|
искать надо в сторону сортировки таблиц
|
Вот такое меню:
<ul>
<li>
<ul>
<li>Раздел 1</li>
<li>Раздел 2</li>
<li>Раздел 3</li>
</ul>
</li>
<li>
<ul>
<li>Раздел 4</li>
<li>Раздел 5</li>
<li>Раздел 6</li>
</ul>
</li>
</ul>
Необходимо чтобы механизм работал только для конечных пунктов меню |
Цитата:
|
для объяснения механизма который мне нужен
а прикрутить к многоуровнему меню сам попробую |
vyrtime, так не понятно чего тебе сортировать. :) Первый уровень или второй внутри себя... Или второй уровень "сквозняком" через все элементы первого уровня...
Покажи какой хтмл хочешь получить из первого примера если куда-то клацнуть... |
Ок, щас попробую объяснить :write:
Меню выглядит так:
<ul>
<li>
<ul>
<li>Раздел 1</li>
<li>Раздел 2</li>
<li>Раздел 3</li>
</ul>
</li>
<li>
<ul>
<li>Раздел 4</li>
<li>Раздел 5</li>
<li>Раздел 6</li>
</ul>
</li>
</ul>
щелкнув, например, по пункту "Раздел 3" - он просто переместится наверх (поменяет позицию) и меню уже будет выглядеть вот так:
<ul>
<li>
<ul>
<li>Раздел 3</li>
<li>Раздел 1</li>
<li>Раздел 2</li>
</ul>
</li>
<li>
<ul>
<li>Раздел 4</li>
<li>Раздел 5</li>
<li>Раздел 6</li>
</ul>
</li>
</ul>
Теперь, например мы щелкнем по "Раздел 2", он также возьмет и переместиться на самую верхнюю позицию и меню будет выглядеть так:
<ul>
<li>
<ul>
<li>Раздел 2</li>
<li>Раздел 3</li>
<li>Раздел 1</li>
</ul>
</li>
<li>
<ul>
<li>Раздел 4</li>
<li>Раздел 5</li>
<li>Раздел 6</li>
</ul>
</li>
</ul>
Теперь щелкнув по "Раздел 3" он переместится опять же вверх и меню будет выглядеть так:
<ul>
<li>
<ul>
<li>Раздел 3</li>
<li>Раздел 2</li>
<li>Раздел 1</li>
</ul>
</li>
<li>
<ul>
<li>Раздел 4</li>
<li>Раздел 5</li>
<li>Раздел 6</li>
</ul>
</li>
</ul>
И т.д. Т.е. при клике не на первый в позиции меню пункт, а на другие пункты, они(пункты) будут перемещаться на первую позицию, а первый пункт в позиции будет просто съезжать/перемещаться вниз вместе с остальными пунктами. Тот же механизм должен работать у разделов 4,5,6. Надеюсь более менее объяснил:) |
Т.е. движение только внутри подраздела, так?
|
да
|
Ну как вариант...
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function Go(Obj) {
var o=Obj.parentNode
var oe=o.childNodes
var i
for (i=0; i<oe.length; i++) {
if (oe[i]==Obj) break
o.appendChild(oe[i])
}
}
</script>
</head>
<body>
<ul>
<li onclick='Go(this)'>Раздел 1</li>
<li onclick='Go(this)'>Раздел 2</li>
<li onclick='Go(this)'>Раздел 3</li>
</ul>
</body>
</html>
|
Вариант )))
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function Go(Obj) {
var o=Obj.parentNode
var oe=o.childNodes
if (Obj!=oe[0]) o.insertBefore(Obj,oe[0])
}
</script>
</head>
<body>
<ul id="ff">
<li onclick='Go(this)'>Раздел 1</li>
<li onclick='Go(this)'>Раздел 2</li>
<li onclick='Go(this)'>Раздел 3</li>
</ul>
</body>
</html>
|
рони, так лучше.
|
$("#menu").delegate("li", "click", fuction(){
if ( $(e.currentTarget).prev() ) {
$(e.currentTarget.parentNode).prepend($(e.currentTarget).remove());
}
})
'menu' - id верхнего уровня меню |
Спасибо всем большое!:)
|
офтопом: а анимация где? я так думал всё красиво будет, пункт так смещается на верхний слой и плывет и проч....
|
почему офтопом?:)
я специально выбрал форум jQuery, чтобы мне подсказали как на нем сделать, а мне на javascript'e написали:) но и на этом спасибо! |
Ну потому офтопом, что не в тему)) А анимация подразумевалась такая http://mootools.net/demos/?demo=Fx.Sort
|
неплохая анимация, как бы её ещё и прикрутить...
|
| Часовой пояс GMT +3, время: 06:46. |