Изменить расположение в списке
Например есть список из десяти (li), как сделать так, чтобы при нажатии кнопки, первый и третий поменялись местами на JS
|
На jQuery можно так:
$('button').click(function() {
var li = $('ul li');
li.eq(1).after(li.eq(0)).before(li.eq(2));
})
|
Sweeft,
а тут почитать не пробовали https://learn.javascript.ru/modifying-document |
Делается swop через доп-элемент. То есть эл2 идет в темп, эл2 меняется на эл1, а эл1 меняется на темп. Стандартная процедура.
|
kostyanet,
не могли бы вы привести код соотвествующий вашему описанию |
Цитата:
<ul id="act">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script type="text/javascript">
var ul = document.getElementById('act');
function run(parent, max, min) {
parent.insertBefore(parent.children[min], parent.children[max]);
parent.insertBefore(parent.children[max], parent.children[min])
};
run(ul, 2, 0); //max > min
</script>
|
А, точно, там нет элемента временного хранения в явном виде, неявно им является родитель. Функция такая
var swap_nodes=function(node1,node2) {
if(!node1 || !node2)
return;
file_list.replaceChild(node1,node2);
file_list.insertBefore(node2,node1);
};
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
вариант с темр , для наглядности меняются элементы в разных родителях
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<ul id="act">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<ul id="act2">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script type="text/javascript">
var node1 = document.querySelector('#act > li:nth-child(1)'), node2 = document.querySelector('#act2 > li:nth-child(3)');
var swap_nodes=function(node1,node2) {
if(!node1 || !node2) return;
var temp = document.createElement('abracadabra');
node1.parentNode.replaceChild(temp,node1);
node2.parentNode.replaceChild(node1,node2);
temp.parentNode.replaceChild(node2,temp)
};
swap_nodes(node1,node2)
</script>
</body>
</html>
|
Цитата:
SWOP существует на уровне ассемблера, но там не надо думать о временном хранилище, вроде бы все идет через аккумулятор. На языке высокого уровня швопы уже приходится обеспечивать вручную. Ну вот, а в DOM в роли аккумулятора оказывается родитель. Выткнул, сместилось, воткнул, готово. Я вообще не вдавался как оно работает, нашел какой-то баян, упростил до предела и запустил. |
kostyanet,
дяденька, вы сейчас с кем разговаривали? и где рабочий пример, если вам не трудно? |
| Часовой пояс GMT +3, время: 11:05. |