2009-05-25 4 views
0

div의 요소 위치를 저장하려면 어떻게해야합니까?jquery 요소 위치 저장 (직렬화?)

serialize를 사용하고 있습니까? 그렇다면 어떻게해야합니까? 그냥, 그냥 쿠키에 아이디의 쉼표로 구분 된 문자열을 마개 할 수있는 순서를 기억해야하는 경우 잘

<div id="produtlist"> 
    <img id="productid_10" src="images/pic10.jpg" class="sortableproduct" alt="" title="" /> 
    <img id="productid_11" src="images/image1.jpg" class="sortableproduct" alt="" title="" /> 
    <img id="productid_12" src="images/image2.jpg" class="sortableproduct" alt="" title="" /> 
    <img id="productid_13" src="images/pic1.jpg" class="sortableproduct" alt="" title="" /> 
    <img id="productid_14" src="images/pic2.jpg" class="sortableproduct" alt="" title="" /> 
    <img id="productid_15" src="images/pic3.jpg" class="sortableproduct" alt="" title="" /> 
</div> 

답변

0

나는 내 프로젝트 중 하나에서 비슷한 기능을 사용하며 순서를 복원 할 준비가 된 코드 조각이 있습니다. 콤마를 보유 쿠키 ID를 분리

    1. 목록 용기 : 함수는 2 파라미터 걸린다. 나는 그것이 UL 기준으로 목록을 다시 정렬,하지만 너무 귀하의 경우 잘 작동합니다 사용

    ... 내가 온 (일부 포럼 또는 블로그에서 그것을 가지고 있었다 어디 잊어 버린

    // Function that restores the list order from a cookie 
    function restoreOrder(_list, _cookie) { 
    
        var list = $('#' + _list); 
        if(list == null) return; 
    
        // fetch the cookie value (saved order) 
        var cookie = $.cookie(_cookie); 
    
        if(!cookie) return; 
    
        // make array from saved order 
        var IDs = cookie.split(","); 
    
        // fetch current order 
        var items = list.sortable("toArray"); 
    
        // make array from current order 
        var rebuild = new Array(); 
        for(var v = 0, len = items.length; v < len; v++) 
         rebuild[items[v]] = items[v]; 
    
        for(var i = 0, n = IDs.length; i < n; i++) { 
    
         // item id from saved order 
         var itemID = IDs[i]; 
    
         if(itemID in rebuild) { 
    
          // select item id from current order 
          var item = rebuild[itemID]; 
    
          // select the item according to current order 
          var child = $('#' + _list).children('#' + item); 
    
          // select the item according to the saved order 
          var savedOrd = $('#' + _list).children('#' + itemID); 
    
          // remove all the items 
          child.remove(); 
    
          // add the items in turn according to saved order 
          // we need to filter here since the "ui-sortable" 
          // class is applied to all ul elements and we 
          // only want the very first! You can modify this 
          // to support multiple lists - not tested! 
          $('#' + _list).filter(':first').append(savedOrd); 
    
         } // if 
    
        } // for 
    
    } // restoreOrder 
    

    그 동안 인터넷 검색을하면서). 나는 원래의 루틴을 수정하여 매개 변수를 받아들이면 재사용이 가능하도록했다.

    건배, 현미경^지구인

  • +0

    원본 게시물 찾기 : http://www.shopdev.co.uk/blog/sortable-lists-using-jquery-ui –

    +0

    공유 주셔서 감사합니다. 나는 그것을 밖으로 검사 할 것이다 :) – Cudos

    +0

    그것이 당신의 prob를 해결하는 데 도움이되는지 알려주세요 :) –

    0

    :

    나는이 사업부가? 페이지로드시 다시 당깁니다.

    직렬화는 내가 아는 한 양식 데이터에서만 작동하며 DOM 요소에서는 작동하지 않습니다.

    는 간단한 jQuery를 사용하여 페이지에서 CSV를 구축 할 것, 당신의 코멘트를 해결하려면 다음을
    var list = ''; 
    $('#productlist .sortableproduct').each(function() { 
        list += this.attr('id') + ','; 
    }); 
    

    그런 다음 당신은 쿠키에 목록을 저장하거나 다시 서버로 보낼 수 있습니다.

    순서대로 다시 배치하는 것은 약간 힘듭니다. 문자열을 다시 서버에 보내면 올바른 순서로 물건을 출력하는 것이 훨씬 간단 해집니다 ...하지만 jquery에서 DOM 도구를 사용하여 DOM 객체를 이동할 수 있습니다. 어느 쪽이든 충분히 간단합니다.

    +0

    네,하지만 방법은 내가 DOM 요소의 순서를 retreive합니까? – Cudos

    +0

    이렇게. 그것은 모두 상당히 간단합니다. – Oli