jQuery: сортировка Div по их идентификатору, по списку ID - PullRequest
2 голосов
/ 29 марта 2011

Если есть массив идентификаторов Javascript

var myArray = ['2', '1', '3'];

Теперь у меня также есть группа DIVS с соответствующим идентификатором.

<div id='container'>
   <div id='item1'>1</div>
   <div id='item2'>2</div>
   <div id='item3'>3</div>
</div>

Есть ли простой способ сортировки этих элементов в зависимости от порядка массива? Я возился с идеей просто проходить через div и использовать insertBefore() и insertAfter() для переупорядочения элементов, но мне интересно, есть ли лучший способ ..

Это то, что я до сих пор придумал ( JSFiddle DEMO )

(function( $ ){
    $.fn.jaySort= function(prefix, lst) {
        var prev=null;
        for (var x=0; x<lst.length; x++){
            if (!prev) prev = $('#placeHolder');
            $('#' + prefix + lst[x]).insertAfter(prev);
            prev = $('#' + prefix + lst[x]);
        }
    };
})( jQuery );  


///////////////////////////////////////////

var myArray = ['2', '1', '3'];
$('#container').jaySort('item', myArray);

UPDATE

На основании принятого ответа ниже, код был уточнен до:

(function( $ ){
    $.fn.jaySort= function(prefix, lst) {
        for (var x=0; x<lst.length; x++)
            $(this).append($('#' + prefix + lst[x]));
    };
})( jQuery );  
$('#container').jaySort('item', ['3', '2', '1']);

Ответы [ 2 ]

6 голосов
/ 29 марта 2011

Это также работает (и короче)

<div id='container'>
   <div id='item1'>1</div>
   <div id='item2'>2</div>
   <div id='item3'>3</div>
</div>

var myArray = ['2', '1', '3'];

$.each(myArray,function(index,value){
   $('#container').append($('#item'+value));
});

jsFiddle

0 голосов
/ 29 марта 2011

Я пришел по этой статье может быть, это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...