如何动态地改变链接的顺序



我有这样的东西:

<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中。

相关内容

  • 没有找到相关文章

最新更新