2010-03-14 12 views
0

웹 사이트에서 기본 탐색을 정렬되지 않은 목록으로 표시하려고합니다. 3 개 항목 후 그 목록을 해지하고 새로 원하는, 그래서 결국이 같은 같습니다정렬되지 않은 목록 닫기

<div id="navigation"> 
    <ul> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
    </ul> 
    <ul> 
     <li>4</li> 
     <li>5</li> 
     <li>6</li> 
    </ul> 
</div> 

탐색이 dynmically jQuery를 + Ajax를 사용하여 생성됩니다. 이것은 내가 좋아하는 외모를 사용하고 어떤 코드입니다 :

$.getJSON("load.php", 
{ 
    some: value 
}, 
function(data) 
{   
    $.each(data.items, function(i, item) 
    { 
     $('#navigation').find('ul').append('<li>' + i + '</li>'); 

     if(i % 3 == 0) 
     { 
      $('#navigation').find('ul').append('</ul><ul>'); 
     } 
    }); 
}); 

불행하게도, 브라우저가이 권리를 해석하지 않습니다 첫 번째 UL의 중첩 된 개체로 마감 UL 태그를 처리합니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

탐색의 "초기 상태"가 있습니까? –

+0

div # 탐색에 빈 ul이 있습니다. – snorpey

답변

3

하나의 해결책은 첫 번째 (검증되지 않은) 문자열의 전체 HTML을 구성 할 수 있습니다 :

$.getJSON("load.php", 
{ 
    some: value 
}, 
function(data) 
{   
    var str="<ul>"; 
    $.each(data.items, function(i, item) 
    { 
     str+='<li>' + i + '</li>'; 

     if(i % 3 == 0) 
     { 
      str+='</ul><ul>'; 
     } 
    }); 
    str+="</ul>"; 
    $('#navigation').html(str); 
}); 
+0

실제로 가장 빠른 방법이기 때문에 실제로 이렇게하는 것이 좋습니다. – kfiroo

+0

당신은 그것이 정말로 가장 깨끗한 지에 관해 논할 수 있습니다. 그러나 속도면에서 더 좋습니다. – adamse

+0

잘 작동합니다. 감사! – snorpey

2

이 시도 :

또한
$.getJSON("load.php", 
{ 
    some: value 
}, 
function(data) 
{ 
    var curr = $('#navigation').find('ul'); 

    $.each(data.items, function(i, item) 
    { 
     curr.append('<li>' + i + '</li>'); 

     if(i % 3 == 0) 
     { 
      curr = curr.after('<ul>'); 
     } 
    }); 
}); 

그것은 "캐시"더 빠른 속도의 현재 UL.

관련 문제