2015-07-30 6 views
1

У меня возникают проблемы при сортировке по массиву. Скажем, у меня есть что-то вроде этого:Сортировка по массиву

HTML:

<button onClick="sortfunc();">Sort</button> 
<ul id="sortable"> 
    <li id="a">is </li> 
    <li id="b">awesome</li> 
    <li id="c">very </li> 
    <li id="d">javascript </li> 
    <li id="e">hard </li> 
    <li id="f">but </li> 
</ul> 

Теперь я хочу использовать внешнюю кнопку, чтобы отсортировать его и сортировать окончательное значение, равное г а л е порядка е б.

Javascript:

$(function() { 
    $("#sortable").sortable(); 
}); 
function sortfunc() { 
    var idsInOrder = $("#sortable").sortable("toArray"); 
     console.log(idsInOrder); 
     //Print: ["a", "b", "c", "d", "e", "f"] 
    var sorttoarray = ["d","a","c","e","f","b"]; 
    //Do something here to sort the ul li to match sorttoarray 

} 

Я распечатать массив, но не в том порядке, как и следовало ожидать. Можно ли использовать внешнюю кнопку для сортировки выше отсортированного по идентификатору, как указано?

EDIT поэтому идентификатор начинается с буквы.

+0

«Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв ..» http://stackoverflow.com/questions/70579/what-are- valid-values-for-id-attribute-in-html, мы можем изменить «id» или использовать «data-id» или даже лучше «data-sorty-id»? – caramba

+0

это был просто пример, может быть, не самый лучший. позвольте мне изменить его, чтобы он начинался с буквы – SQLNub

+0

Если у вас есть сортируемый элемент (что означает, что вы хотите разрешить пользователю его сортировать), почему вы выбираете сортировку по-своему произвольно? –

ответ

1

Вот как вы можете сделать это (я изменил HTML немного, так как вам не нужен Сортируемый функциональность JQuery UI):

<button id="doSomething">Sort</button> 
<ul id="sortable"> 
    <li id="1">is </li> 
    <li id="2">awesome</li> 
    <li id="3">very </li> 
    <li id="4">javascript </li> 
    <li id="5">hard </li> 
    <li id="6">but </li> 
</ul>  

А вот мой JavaScript:

function sortfunc() { 
    var liItems = $("#sortable li"); 
    var sorttoarray = ["4","1","3","5","6","2"]; 

    $("#sortable").empty(); 

    for (var i = 0; i < sorttoarray.length; i++) { 
     $("#sortable").append(liItems.filter("#" + sorttoarray[i])); 
    } 
} 

$("#doSomething").click(function() { 
    sortfunc(); 
}); 

Вот рабочий jsfiddle: http://jsfiddle.net/odmrxwxr/

в конце концов я все здесь сохраняем в li элементы, пустой родительский ul, а затем проведите цикл по массиву для порядка, и когда я доберусь до следующего желаемого элемента, который должен быть в порядке, я просто вернусь обратно append().

+0

Но вы теряете сортируемую функциональность? Я думал, что просто пустил улицу и снова добавил ее. Не надеялся пойти по этому маршруту. – SQLNub

+0

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

+0

Я просто пойду с твоей идеей и удалю все и снова добавлю. Большое вам спасибо за вашу помощь! – SQLNub

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