2014-10-16 3 views
0

У меня есть список - это генерироваться в алфавитном порядкесписок дисплей от задней к передней

<div class='list'> 
    <ul> 
    <li><a href="/home/fresa/Desktop/task/page.html">2011</a></li> 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2013">2012</a></li> 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2013</a></li> 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2014</a></li> 
    </ul> 
</div> 

и я пытаюсь повернуть его вспять от задней к передней:

var arr = []; 
arr.push($('.list ul li')); 
$('.list ul').html(arr.reverse()); 

но это стальные дисплеи в не правильный порядок

, как это исправить, и то, что я делаю неправильно

+1

возможно дубликат [JQuery изменить порядок дочерних элементов] (http://stackoverflow.com/questions/ 5347839/jquery-reverse-the-order-of-child-elements) –

+0

Это потому, что ваш 'arr.push()' не работает так, как вы ожидаете. Он нажимает один объект jQuery на ваш массив, а не 4 отдельных элемента, которые вы ожидаете. Я добавил [ответ ниже] (http://stackoverflow.com/a/26414761/361762), хотя и после нескольких других. – dave

ответ

3

Попробуйте это:

$('.list ul li').each(function(){ 
    $(this).prependTo($(this).parent()) 
}); 

Он будет проходить через каждый элемент и добавлять его в начало списка. См скрипку здесь:

http://jsfiddle.net/afsmonr1/

+1

cooool, tnx man! – Mongo

1

Попробуйте

var list = $(".list ul li").get().reverse(); 
 
$(".list ul").empty(); 
 
$.each(list, function(i) { 
 
    $(".list ul").append("<li>" + list[i].innerHTML + "</li>"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<div class='list'> 
 
    <ul> 
 
    <li><a href="/home/fresa/Desktop/task/page.html">2011</a> 
 
    </li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2013">2012</a> 
 
    </li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2013</a> 
 
    </li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2014</a> 
 
    </li> 
 
    </ul> 
 
</div>

1

Это потому, что ваш arr.push() не работает, как вы ожидаете. Он нажимает один объект jQuery на ваш массив, а не 4 отдельных элемента, которые вы ожидаете.

Если установить массив следующим образом он будет работать:

$(function() { 
 
    var arr = $('.list ul li').get(); 
 
    $('.list ul').html(arr.reverse()); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class='list'> 
 
    <ul> 
 
    <li><a href="/home/fresa/Desktop/task/page.html">2011</a></li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2013">2012</a></li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2013</a></li> 
 
    <li><a href="/home/fresa/Desktop/task/page.html#?topic=2012">2014</a></li> 
 
    </ul> 
 
</div>

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