2010-12-03 4 views
0

<li> 요소를 반복하여 그 값을 업데이트하고이를 문서에 표시하려고합니다.javascript가 li 속성을 통해 루핑되고 항목 당 값이 변경됨

내가 이것을하는 이유는 순서대로 요소 목록을 정렬하기 때문입니다. JQuery에서 Sortable을 사용하여이 작업을 수행합니다.

<li> 1 </li> 
<li> 2 </li> 
<li> 3 </li> 
<li> 4 </li> 
<li> 5 </li> 

순서가 될 수

<li> 3 </li> 
    <li> 1 </li> 
    <li> 4 </li> 
    <li> 2 </li> 
    <li> 5 </li> 

는 그때 다시 1,2,3,4,5로 리 항목의 값을 변경하는 제 JS 함수를 원하는 버튼을 클릭. 그것의 가치가 나는 이전에 어떻게 돌아 왔는지에 대한 해결책을 찾고 있지 않다.

감사합니다.

+0

시퀀스 1, 2, 3, 4, ...이 항상 있습니까? 이 경우 항목 (각 방법)을 살펴보고 이에 따라 색인을 설정할 수 있습니다. 이전 값에 대해 걱정할 필요가 없으며 그냥 재정의 할 수 있습니다. :) –

+0

네, 내가 무엇을하려고하는지 반복하고, 내가 예상 한대로 오버라이드합니다. 이 일을하는 가장 좋은 방법은 무엇입니까? – Julio

+0

나는 $ elems.each (function (index) {this.html (index)})를 따라 뭔가를 추측한다. 속임수를 쓸거야. 제 jQuery-Fu는 약간 나쁜 형태로되어 있습니다 만, 그걸 기반으로 솔루션을 파생시킬 수 있기를 바랍니다. :) –

답변

4

이 (jQuery를 1.4로) 작동합니다 :

$('.your_list li').text(function (index) { 
    return index + 1; 
}); 
+2

영리합니다. "text"메소드에 func을 직접 전달할 수 있습니다. 쿨 솔루션. –

1

난 당신이 아니라 그 내용보다는 목록 항목의 순서를 변경 거라고 생각해. 이렇게하면 li의 속성/클래스/중 하나가 손실되지 않습니다. DOM 요소를 그대로 유지하면 ul의 자식 순서 만 변경됩니다.

나는 좋은 작은 조각이 그것을 할 발견

http://www.onemoretake.com/2009/02/25/sorting-elements-with-jquery/

여전히

function mysortA(a, b) { 
    var compA = $(a).text().toUpperCase(); 
    var compB = $(b).text().toUpperCase(); 
    return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;  
} 
function mysortB(a, b) { 
    return a.originalindex < b.originalindex ? -1 
     : a.originalindex > b.originalindex ? 1 
     : 0; 
} 

당신은 초기화가 초기 순서를 기억한다해야 할 유일한 것은 :

예 :,973,210
// sort them using your sort function 
listitems.sort(mysort) 
// rebuild the list container 
listitems.each(function(idx, itm) { mylist.append(itm); }); 

그리고 종류의 다시 :

var ul=$('ul'); 
ul.children('li').get().sort(mysortB).each(function(i,li){ ul.append(li); }); 

주 : 검증되지 않은 - 아이디어를 잡아.

관련 문제