我希望能够div通过单击按钮对页面上的一些元素进行排序.
所有这些都有简单的文本内容,例如:
<div class='sortme'>
CCC
</div>
<div class='sortme'>
AAA
</div>
<div class='sortme'>
BBB
</div>
<div class='sortme'>
DDD
</div>
Run Code Online (Sandbox Code Playgroud)
当用户单击按钮时,应按字母顺序重新排列.显然,有很多方法可以做到这一点,最明显的是我们可以将所有内容都放到一个数组中,对数组进行排序并根据它重新创建HTML.
这是这种解决方案的一个例子:
http://jsfiddle.net/hibbard_eu/C2heg/
然而,这对于已经使用的大量代码来说不会很好,而且我希望能够简单地移动div而不做任何破坏性的操作.这可能吗?
Amm*_*CSE 15
$('.sortme').sort(function(a, b) {
if (a.textContent < b.textContent) {
return -1;
} else {
return 1;
}
}).appendTo('body');Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class='sortme'>
CCC
</div>
<div class='sortme'>
AAA
</div>
<div class='sortme'>
BBB
</div>
<div class='sortme'>
DDD
</div>Run Code Online (Sandbox Code Playgroud)
即使没有jQuery也可以很简单地完成
function sortThem(s) {
Array.prototype.slice.call(document.body.querySelectorAll(s)).sort(function sort (ea, eb) {
var a = ea.textContent.trim();
var b = eb.textContent.trim();
if (a.textContent < b.textContent) return -1;
if (a.textContent > b.textContent) return 1;
return 0;
}).forEach(function(div) {
div.parentElement.appendChild(div);
});
}
// call it like this
sortThem('div.sortme');
Run Code Online (Sandbox Code Playgroud)
element .appendChild(x) 将 x 添加为element的最后一个子元素,如果 x 存在于 DOM 中,则将其从其当前位置移动,因此,无需任何体操将其删除到一个位置并将其添加到 t'other