asimryu

drag & drop & json & localstorage(2015.06.19)

Jun 18th, 2015
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.82 KB | None | 0 0
  1. <!doctype html>
  2. <html lang="ko">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>drag & drop</title>
  6. <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  7. <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  8. <style>
  9. .content div {width:500px;height:500px;display:inline-block;border:2px solid #666;}
  10. #goods {background:#0f0;}
  11. #goods div{width:100px;height:100px;float:left;margin:10px;background:#fff;}
  12. #cart {background:#ff0;}
  13. </style>
  14. </head>
  15. <body>
  16.     <div class="content">
  17.         <div id="goods">
  18.             <div data-pno="1" data-incart="no" data-ox="" data-oy="">짬뽕</div>
  19.             <div data-pno="2" data-incart="no" data-ox="" data-oy="">탕수육</div>
  20.             <div data-pno="3" data-incart="no" data-ox="" data-oy="">볶음밥</div>
  21.             <div data-pno="4" data-incart="no" data-ox="" data-oy="">짜장면</div>
  22.             <div data-pno="5" data-incart="no" data-ox="" data-oy="">난자완쓰</div>
  23.             <div data-pno="6" data-incart="no" data-ox="" data-oy="">잡채밥</div>
  24.             <div data-pno="7" data-incart="no" data-ox="" data-oy="">쟁반짜장</div>
  25.             <div data-pno="8" data-incart="no" data-ox="" data-oy="">유산슬</div>
  26.         </div>
  27.         <div id="cart"></div>
  28.     </div>
  29.     <div id="mymenu"></div>
  30.     <script>
  31.         var menus = $("#goods > div");
  32.         $(menus).each(function(){
  33.             var offset = $(this).offset();
  34.             var ox = offset.left;
  35.             var oy = offset.top;
  36.             $(this).attr("data-ox",ox);
  37.             $(this).attr("data-oy",oy);
  38.         });
  39.  
  40.         var localData = $.parseJSON(localStorage.getItem('mymenus'));
  41.         $(localData).each(function(key,value){
  42.             var menuarr = value.split(",");
  43.             var menu = $("#goods > div[data-pno='" + menuarr[0]  + "']");
  44.             $(menu).attr("data-incart","yes");
  45.             $(menu).offset({left:menuarr[1],top:menuarr[2]});
  46.  
  47.         });
  48.  
  49.         function savePosition(){
  50.             var $mygoods = $("#goods > div[data-incart='yes']");
  51.             var mymenus = [];
  52.             var count = 0;
  53.             $($mygoods).each(function(){
  54.                 var pno = $(this).attr("data-pno");
  55.                 var offset = $(this).offset();
  56.                 var newx = offset.left;
  57.                 var newy = offset.top;
  58.                 mymenus[count] = pno + "," + newx + "," + newy;
  59.                 count++;
  60.             });
  61.             var dataToStore = JSON.stringify(mymenus);
  62.             localStorage.setItem('mymenus', dataToStore);
  63.         }
  64.  
  65.         $("#goods > div").draggable({ revert: true });
  66.         $("#cart").droppable({
  67.             drop:function(event,ui){
  68.                 ui.draggable.draggable("option","revert",false);
  69.                 ui.draggable.draggable("option","containment","#cart");
  70.                 ui.draggable.attr("data-incart","yes");
  71.                 savePosition();
  72.             }
  73.         });
  74.  
  75.         $("#goods > div").dblclick(function(){
  76.             $(this).draggable("option","revert",true);
  77.             $(this).draggable("option","containment","");
  78.             var ox = $(this).attr("data-ox");
  79.             var oy = $(this).attr("data-oy");
  80.             $(this).offset({left:ox,top:oy});
  81.             $(this).attr("data-incart","no");
  82.             savePosition();
  83.         });
  84.  
  85.  
  86.  
  87.     </script>
  88. </body>
  89. </html>
Advertisement
Add Comment
Please, Sign In to add comment