我有这样的东西:
<div class="list-group list">
<a href="blabla" id="1" data-order="1">Hello</a>
<a href="blabld" id="2" data-order="2">World</a>
</div>
不,我尝试用纯Javascript动态地改变链接的顺序。
谁有什么建议,怎么做?
My Goal is this:
<div class="list-group list">
<a href="blabld" id="2" data-order="1">World</a>
<a href="blabla" id="1" data-order="2">Hello</a>
</div>
给你:
function sort(r) {
var $list = document.getElementsByClassName('list')[0];
var listGroupA = document.getElementsByTagName('a');
var $listGroupA = [];
for (var i = 0; i < listGroupA.length; ++i) {
$listGroupA.push(listGroupA[i]);
}
$listGroupA.sort(function (a, b) {
return r * (a.getAttribute('data-order') - b.getAttribute('data-order'));
});
for (var i = 0; i < $listGroupA.length; i++) {
$list.removeChild($listGroupA[i]);
}
for (var i = 0; i < $listGroupA.length; i++) {
$list.appendChild($listGroupA[i]);
}
}
var reverse = 1;
$('#sort').click(function () {
reverse = reverse * -1;
sort(reverse);
});
和小提琴
您可以删除最后一个列表项并创建一个新项,并将其添加到容器div中,如下所示:
var world = document.getElementById("2");
var id = world.id;
var data = world.getAttribute("data-order");
var div = document.getElementsByClassName("list")[0];
div.removeChild(world);
var newA = document.createElement("a");
div.appendChild(newA);
newA.id = id;
newA.dataset.order = data;
JSFiddle示例
Reorder = function()
{
var x = document.getElementsByTagName('a');
document.getElementsByClassName('list').innerHTML = "";
var content = "";
for(i = x.length; i > 0; i--)
{
content = content + x[i - 1].outerHTML;
}
document.getElementsByClassName('list').innerHTML = content;
}
上面的代码将把现有的项放入数组并清除其内容。现在,它们将被添加到div中。我在这里使用classname将其添加到div中。