Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как поменять местами элементы списка? (https://javascript.ru/forum/jquery/7715-kak-pomenyat-mestami-ehlementy-spiska.html)

sniffysko 16.02.2010 02:06

Как поменять местами элементы списка?
 
Вложений: 1
Имеется такой код ХТМЛ:
Код:

<ul>
        <li id="li_1">
                <a href="#" class="upper"  id="upper_1"></a>
                <a href="#" class="downer" id="downer_1"></a>
                <input type="text" name="name[1]" value="Тестик 1">
        <li id="li_2">
                <a href="#" class="upper"  id="upper_2"></a>
                <a href="#" class="downer" id="downer_2"></a>
                <input type="text" name="name[2]" value="Тестик 2">
        <li id="li_3">
                <a href="#" class="upper"  id="upper_3"></a>
                <a href="#" class="downer" id="downer_3"></a>
                <input type="text" name="name[3]" value="Тестик 3">
</ul>

Выглядит это примерно как на вложенном файле.

При помощи стрелок вверх и вниз хочется перемещать строки. Самое большее, что я придумал, это обменивать содержимое элементов LI. Но это не правильно, поскольку, сами LI не перемешаются, а перемещенный HTML код теряет обработчики событий.

Gvozd 16.02.2010 02:30

http://javascript.ru/tutorial/dom

sniffysko 16.02.2010 02:38

Эту штуку читал. Но не помогло. Подумал еще, пошукал и получилось вот что:
$(function(){
	$('.upper').click(move_up);
	$('.downer').click(move_down);

	function move_up(eventObject){
			var curr_li = $(this).parent();
			var prev_li = $(curr_li).prev();

			prev_li.insertAfter(curr_li);
	} 

	function move_down(eventObject){
			var curr_li = $(this).parent();
			var next_li = $(curr_li).next();

			next_li.insertBefore(curr_li);
	} 
});

sniffysko 16.02.2010 02:41

Гы-гы. А внизу было еще похожее сообщение:
http://javascript.ru/forum/jquery/37...ami-bloki.html
И решение предложено практически такое же.

sergdev 16.02.2010 03:07

Я в последнее время полюбил cloneNode :) и replaceNode :)


Часовой пояс GMT +3, время: 00:46.