`

jQuery实现拖动布局并将排序结果保存到数据库

 
阅读更多
本例实现的效果:
通过拖动随意布局页面模块。
记录拖动后模块的位置,并记录到数据库中。
页面永久性布局,用任意浏览器在任意时候打开,页面布局不变。(除非用户再次更改模块的排序,跟cookie没有关系)。

原理
采用jquery ui的sorttable拖动排序插件实现拖动效果。
将拖动后的模块的位置通过ajax传给服务端PHP程序。
PHP程序处理位置信息后,更新数据库中相应的字段内容。


<div id="loader"></div>
   <div id="module_list">
   <input type="hidden" id="orderlist" />
   <div class="modules" title="1">
      <h3 class="m_title">Module:1</h3>
      <p>1</p>
   </div>
 ...
</div> 
 DIV#loader用于显示提示信息,如loading...,#orderlist是一个隐藏域,用于记录模块的排序值。“...”表示循环了n个DIV.modules,具体生成的代码在后面会讲到。


CSS
#module_list{margin-left:4px}
 .modules{float:left; width:200px; height:140px; margin:10px; border:1px solid #acc6e9; background:#e8f5fe} .m_title{height:24px; line-height:24px; background:#afc6e9}
 #loader{height:24px; text-align:center}
 简单,关键是要给.modules一个想左浮动的样式float:left。

jQuery
$(function(){
    $(".m_title").bind('mouseover',function(){
        $(this).css("cursor","move")
    });
    var $show = $("#loader");
    var $orderlist = $("#orderlist");
    var $list = $("#module_list"); 

    $list.sortable({
          opacity: 0.6, //设置拖动时候的透明度
          revert: true, //缓冲效果
          cursor: 'move', //拖动的时候鼠标样式 
          handle: '.m_title', //可以拖动的部位,模块的标题部分 
          update: function(){ 
                  var new_order = []; 
                  $list.children(".modules").each(function() { 
                        new_order.push(this.title);
                  }); 
                  var newid = new_order.join(','); 
                  var oldid = $orderlist.val(); 
                  $.ajax({ 
                       type: "post", 
                       url: "update.jsp", //服务端处理程序 
                       data: { id: newid, order: oldid }, //id:新的排列对应的ID,order:原排列顺序 
                       beforeSend: function() {
                             $show.html("<img src='load.gif' /> 正在更新");
                       },
                       success: function(msg) { 
                             //alert(msg); 
                             $show.html(""); 
                       } 
                  }); 
               } 
         }); 
   });
 
  拖动排序的动作都写在$list.sortable({...})里面,参数设置和方法请看代码的注释。juery ui的sortable插件提供了很多方法和参数配置,详情请查看http://jqueryui.com/demos/sortable
 
拖动完成要执行一个update方法,该方法需要将拖动后排序的位置通过ajax提交给后台处理。


var new_order = []; 
$list.children(".modules").each(function() { 
new_order.push(this.title); 
}); 
var newid = new_order.join(','); 
var oldid = $orderlist.val();
 说明:循环每个模块.modules,获取拖动排序后每个模块的属性title值,将值通过逗号连接成一个字符串。原来的未拖动之前的排序值从隐藏域orderlist中获取。
获取排序值后,就是通过ajax和后台程序交互了。
首先别忘了加载jquery库和jquery ui的sortable拖动排序插件。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>










分享到:
评论
1 楼 masuweng 2019-03-19  
求代码,谢谢.

相关推荐

    jQuery ui drag插件实现浮动div拖动排列布局代码

    jQuery ui drag插件实现浮动div拖动排列布局代码,jQuery实现拖动布局并将排序结果保存到数据库

    jQuery拖动布局其结果保存到数据库

    介绍了jQuery实现拖动布局并将排序结果保存到数据库的实现方法,感兴趣的朋友可以参考一下

    jQuery可水平垂直自由拖拽代码.zip

    jQuery可水平垂直自由拖拽代码是一款基于drag.js插件实现的支持水平拖拽,垂直拖拽,自由拖拽等不同特效。

    jQuery可拖动网格布局排列代码.zip

    jQuery可拖动网格布局排列代码是一款jQuery基于gridster.js网格布局插件。

    asp+jquery+access拖动排序 ajax更新数据库

    asp+jquery+access拖动排序 ajax更新数据库 利用jquery和无刷新,鼠标拖动排序,最后保存access数据库。 拖动布局实现排序结果同步数据库

    jquery ui sortable拖拽后保存位置

    jqueryUI sortable 可以用来进行页面拖拽布局,然而有一个小问题就是拖拽后如何保存状态。 工作中遇到了这个情况,遍把这个问题记了下来,具体思路是: 利用拖拽stop后利用  var arr = $( “.sortable” ).sortable...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    ExtAspNet_v2.3.2_dll

    -ExtAspNet支持原生的AJAX,也就是说控件的属性改变在AJAX过程中会反映到页面中,但并不是所有的控件属性都支持AJAX改变。 -加载s.gif图片在本机进行,不会请求extjs.com远程资源(feedback:efrigate43,abaocoole)...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -优化AJAX的内部实现,每个页面保存的ViewState现在减少1/3左右(重要更新)。 -优化Tree节点的NodeId自动生成,减少ViewState占用。 +2009-08-09 v2.0 beta5 +ExtAspNet和Asp.net的提交按钮兼容问题...

Global site tag (gtag.js) - Google Analytics