你不想设置他们的index,本身;您想从字面上更改他们在容器中的顺序。
这很容易(使用 DOM 或 jQuery):如果要将元素移动到其前一个兄弟元素的前面,请使用:insertBfore
prev
var elm = $("selector_for_the_element");
elm.insertBefore(elm.prev());
...或在其下一个兄弟之后,使用:insertAfter
next
var elm = $("selector_for_the_element");
elm.insertAfter(elm.next());
大概你会在完成动画时这样做,将 div 恢复为浮动而不是绝对定位。
实例| 来源
HTML:
<div id="container"></div>
CSS:
#container div {
float: left;
width: 4em;
border: 1px solid black;
margin: 2px;
padding: 2px;
}
.left, .right {
cursor: pointer;
font-weight: bold;
font-size: 14pt;
background-color: #eee;
border: 1px solid #aaa;
}
JavaScript:
jQuery(function($) {
var container = $("#container");
var index;
for (index = 0; index < 10; ++index) {
$("<div>d" + index +" <span class='left'><</span> <span class='right'>></span></div>")
.appendTo(container)
.attr("id", "d" + index);
}
container.delegate(".left", "click", function() {
var div = $(this).closest("div"),
prev = div.prev();
if (prev[0]) {
div.insertBefore(prev);
}
});
container.delegate(".right", "click", function() {
var div = $(this).closest("div"),
next = div.next();
if (next[0]) {
div.insertAfter(next);
}
});
});