2015-09-14 4 views
0

У меня есть что-то вроде этого:Как динамически изменять порядок ссылок

<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.

Есть ли у кого-нибудь какие-либо предложения, как это сделать?

Моя цель заключается в следующем:

<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> 
+0

возможно дубликат [Как я могу изменить дочерние элементы заказа в JS] (http://stackoverflow.com/questions/25850389/how- i-can-change-child-elements-order-in-js) – Mattias

+0

О, подождите, просто JS, а не jQuery ... Извините, не дубликат. Как я могу развязать? – Anders

ответ

1

Здесь вы идете:

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); 
}); 

И fiddle

0

Вы можете удалить последний элемент списка и создать еще один элемент и добавить его в контейнер 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; 
0

JSFiddle Example

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. Я использовал имя класса, чтобы добавить его в div.

Смежные вопросы