2011-03-29 6 views
2

Javascript ID의 배열이있는 경우jQuery : ID 목록을 기반으로 ID를 기준으로 Div 정렬

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

이제 해당 ID가있는 DIVS 그룹도 있습니다.

<div id='container'> 
    <div id='item1'>1</div> 
    <div id='item2'>2</div> 
    <div id='item3'>3</div> 
</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); 

업데이트

아래에서 허용되는 대답을 기준으로 코드는 다음으로 수정되었습니다.

(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']); 
+0

무엇이 잘못 되었습니까? – mcgrailm

+0

꽤 깔끔한 솔루션, 어쨌든 모든 항목을 반복해야 할 것입니다. – rsplak

+0

아무 것도 ** 잘못 ** 있습니다. 아마도 반복하지 않고 더 좋은 방법이 있는지 궁금합니다. – Dutchie432

답변

6

이 또한 작동 (이고 짧은) 나는 accros this article왔다

<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

나는'append()'변경을 좋아한다. 두 코드를 모두 업데이트했습니다. http://jsfiddle.net/Jaybles/CQXmW/ – Dutchie432

0

아마도 이것이 당신이 찾고 무엇인가?

+0

아닙니다. 그래도 고마워. – Dutchie432

관련 문제