jQuery之Nestable

空间属性置顶:

属性 说明
change 事件,当控件改变时触发
nestable 方法,获取顺序JSON数据,形式如下:

[{"id":1},{"id":2},{"id":3,"children":[{"id":4},{"id":5}]}]

  今天,有个刚毕业的同事要做一个“排序出港”的功能,看了他用的控件,炫酷程度惊呆了我,而且实现方式非常简单。还是应验了那句老话,你知道多少并不重要,重要的是如何利用你所知道的。

  先来看效果:

  

  这么炫酷的一个出港顺序管理,出港顺序直接通过拖拉船名控制。做了Web开发两年,已经习惯了当用户点击的时候做什么操作。实际上,大部分操作都是和数据库打交道。即使玩游戏也是如此,实际上通过拖动来控制顺序是非常炫酷的。

  下面用Nestable来尝试实现下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Nestable lists</title>
        <!--[if !IE]> -->
        <script type="text/javascript">
            window.jQuery || document.write("<script src=‘assets/js/jquery-2.0.3.min.js‘>"+"<"+"/script>");
        </script>
        <!-- <![endif]-->
    <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="bootstrap.min.js"></script>
    <script type="text/javascript" src="jquery-ui-1.10.3.full.min.js"></script>
    <script type="text/javascript" src="jquery.ui.touch-punch.min.js"></script>
    <script type="text/javascript" src="jquery.nestable.min.js"></script>
        <link href="assets/css/bootstrap.min.css" rel="stylesheet" />
        <link rel="stylesheet" href="assets/css/font-awesome.min.css" />
        <link rel="stylesheet" href="assets/css/ace.min.css" />
        <script src="assets/js/jquery.nestable.min.js"></script>
        <script type="text/javascript">
            jQuery(function($){
                $(‘.dd‘).nestable();
                $(‘.dd-handle a‘).on(‘mousedown‘, function(e){
                    e.stopPropagation();
                });
                $(‘[data-rel="tooltip"]‘).tooltip();
                 $(‘#nestable‘).nestable().on(‘change‘, function(){
                     var r = $(‘.dd‘).nestable(‘serialize‘);
                     $("#xx").html(JSON.stringify(r));    //改变排序之后的数据
                });
                 $(‘#nestable‘).nestable().on(‘change‘, updateOutput);
            });
        </script>
    </head>
    <body>
        <div id="xx">123</div>
        <div class="main-container" id="main-container">
            <script type="text/javascript">
                try{ace.settings.check(‘main-container‘ , ‘fixed‘)}catch(e){}
            </script>
            <div class="main-container-inner">
                <a class="menu-toggler" id="menu-toggler" href="#">
                    <span class="menu-text"></span>
                </a>
                <div class="main-content">
                    <div class="page-content">
                        <div class="row">
                            <div class="col-xs-12">
                                <div class="row">
                                    <div class="col-sm-6">
                                        <div class="dd" id="nestable">
                                            <ol class="dd-list">
                                                <li class="dd-item" data-id="1">
                                                    <div class="dd-handle">
                                                        Item 1
                                                        <i class="pull-right bigger-130 icon-warning-sign orange2"></i>
                                                    </div>
                                                </li>
                                                <li class="dd-item" data-id="2">
                                                    <div class="dd-handle">Item 2</div>

                                                    <ol class="dd-list">
                                                        <li class="dd-item" data-id="3">
                                                            <div class="dd-handle">
                                                                Item 3
                                                                <a data-rel="tooltip" data-placement="left" title="Change Event Date" href="#" class="badge badge-primary radius-5 tooltip-info pull-right white no-hover-underline">
                                                                    <i class="bigger-120 icon-calendar"></i>
                                                                </a>
                                                            </div>
                                                        </li>
                                                        <li class="dd-item" data-id="4">
                                                            <div class="dd-handle">
                                                                <span class="orange">Item 4</span>
                                                                <span class="lighter grey">
                                                                    &nbsp; with some description
                                                                </span>
                                                            </div>
                                                        </li>
                                                        <li class="dd-item" data-id="5">
                                                            <div class="dd-handle">
                                                                Item 5
                                                                <div class="pull-right action-buttons">
                                                                    <a class="blue" href="#">
                                                                        <i class="icon-pencil bigger-130"></i>
                                                                    </a>

                                                                    <a class="red" href="#">
                                                                        <i class="icon-trash bigger-130"></i>
                                                                    </a>
                                                                </div>
                                                            </div>
                                                            <ol class="dd-list">
                                                                <li class="dd-item item-orange" data-id="6">
                                                                    <div class="dd-handle"> Item 6 </div>
                                                                </li>
                                                                <li class="dd-item item-red" data-id="7">
                                                                    <div class="dd-handle">Item 7</div>
                                                                </li>
                                                                <li class="dd-item item-blue2" data-id="8">
                                                                    <div class="dd-handle">Item 8</div>
                                                                </li>
                                                            </ol>
                                                        </li>
                                                        <li class="dd-item" data-id="9">
                                                            <div class="dd-handle btn-yellow no-hover">Item 9</div>
                                                        </li>

                                                        <li class="dd-item" data-id="10">
                                                            <div class="dd-handle">Item 10</div>
                                                        </li>
                                                    </ol>
                                                </li>
                                                <li class="dd-item" data-id="11">
                                                    <div class="dd-handle">
                                                        Item 11
                                                        <span class="sticker">
                                                            <span class="label label-success arrowed-in">
                                                                <i class="icon-ok bigger-110"></i>
                                                            </span>
                                                        </span>
                                                    </div>
                                                </li>
                                                <li class="dd-item" data-id="12">
                                                    <div class="dd-handle">Item 12</div>
                                                </li>
                                            </ol>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="ace-settings-container" id="ace-settings-container">
                    <div class="btn btn-app btn-xs btn-warning ace-settings-btn" id="ace-settings-btn">
                        <i class="icon-cog bigger-150"></i>
                    </div>
                    <div class="ace-settings-box" id="ace-settings-box">
                        <div>
                            <div class="pull-left">
                                <select id="skin-colorpicker" class="hide">
                                    <option data-skin="default" value="#438EB9">#438EB9</option>
                                    <option data-skin="skin-1" value="#222A2D">#222A2D</option>
                                    <option data-skin="skin-2" value="#C6487E">#C6487E</option>
                                    <option data-skin="skin-3" value="#D0D0D0">#D0D0D0</option>
                                </select>
                            </div>
                            <span>&nbsp; Choose Skin</span>
                        </div>
                        <div>
                            <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-navbar" />
                            <label class="lbl" for="ace-settings-navbar"> Fixed Navbar</label>
                        </div>
                        <div>
                            <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-sidebar" />
                            <label class="lbl" for="ace-settings-sidebar"> Fixed Sidebar</label>
                        </div>
                        <div>
                            <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-breadcrumbs" />
                            <label class="lbl" for="ace-settings-breadcrumbs"> Fixed Breadcrumbs</label>
                        </div>
                        <div>
                            <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-rtl" />
                            <label class="lbl" for="ace-settings-rtl"> Right To Left (rtl)</label>
                        </div>
                        <div>
                            <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-add-container" />
                            <label class="lbl" for="ace-settings-add-container">
                                Inside
                                <b>.container</b>
                            </label>
                        </div>
                    </div>
                </div>
            </div>

            <a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
                <i class="icon-double-angle-up icon-only bigger-110"></i>
            </a>
        </div>
    </body>
</html>

  以上代码实现的东西是,当用户拖拉切换顺序的时候,将顺序的JSON输出到顶部。

  显示效果如下:

  

  当然,在切换的时候,如果不是显示在顶部,而是发个AJAX去给数据库Update个顺序,那这种操作,就是刚买电脑的小学生都会灵活运用了。

时间: 2024-11-10 08:04:15

jQuery之Nestable的相关文章

前端:jQuery笔记

前端:jQuery笔记 此系列文章乃是学习jQuery的学习笔记. Asp.net MVC Comet推送 摘要: 一.简介 在Asp.net MVC实现的Comet推送的原理很简单. 服务器端:接收到服务器发送的AJAX请求,服务器端并不返回,而是将其Hold住,待到有东西要通知客户端时,才将这个请求返回. 客户端:请求异步Action,当接收到一个返回时,立即又再发送一个. 缺点:会长期占用一个Asp...阅读全文 posted @ 2015-02-10 12:01 逆心 阅读(1072)

jquery.nestable.min.js可拖动标签

主容器为一个叫div的classname为dd的东西. 只要对这个主容器进行捕获加上一个方法 nestable就可以了. 可以给的属性为?? serialize   直接以字符串的形式给入,意思就是按照当前的排序进行展示 这个东西是返回出来的数组对象.你可以用一个变量来承接他 collapseAll?   这个是用来折叠所有桌面的 , 就是当这种配置生效的时候,需要先将这个东西渲染出来, 也就是在nestable()方法调用完后,然后通过 nestable("collapseAll")

Java企业通用平台框架:Bootstrap、HTML5、jQuery、Spring MVC、Mybatis、Hibernate、高性能、高并发

1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE6~IE11等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分页.各种条件的查询等S

30 个最棒的 jQuery 的拖放插件

jQuery 允许用户为任意 DOM 元素添加可拖放的功能,通过 jQuery 的拖放插件你可以轻松实现网页上任意元素的拖拽操作.在本文中我们向你推荐 30 个最棒的 jQuery 的拖放插件. 点击图片访问插件网站: 1. Dropper Dropper is a jQuery plugin for simple drag and drop uploads. 2. Fancy Product Designer 3. Dragdealer 4. jQuery Ajax File Uploader

框架源码|Java、Spring、HTML5、JavaScript、jQuery、Web移动端

A.代码生成器(开发利器) 生成Java各层次的类和JSP等文件,提高开发效率 B.阿里巴巴数据库连接池Druid 性能最好的数据库连接池,稳定.可扩展.高性能.高并发 C.安全权限框架Shiro 实现认证.授权.加密.缓存.并发.会话管理.单点登录等功能 D.Ehcache二级缓存和Spring MVC静态加载缓存 E.微信接口开发 详尽的单元测试代码,详尽的开发文档,每个模块都有详尽说明和代码示例 F.提供基于JBPM工作流的OA办公系统(后续加入Activiti 5.18工作流) ----

[源码]Bootstrap、jQuery、HTML5、Spring MVC、Mybatis、Hibernate、安全权限、高性能、高并发

功能特点: 1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站.管理后台等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分页.各种条件

Java+Bootstrap、jQuery、HTML5、SpringMVC、Hibernate后台框架

A.快速开发.框架的数据持久层将添加.修改.删除.排序.分页.各种条件的查询封装成通用模块,不用手写SQL.       B.Spring Security安全权限管理,认证和授权.不仅可管理各个功能模块的权限,也可管理功能模块里的页面按钮权限. JavaEE企业开发框架,简称JEEFW[JavaEE Framework],是我们软件组为了快速开发各种B/S产品,花费几个月而开发的企业开发框架.该框架经过测试组的测试,已应用到多个项目. JavaEE企业开发框架前端采用最受欢迎的HTML.CSS

Java框架Bootstrap、jQuery、Spring MVC、Hibernate、安全权限

A.快速开发.框架的数据持久层将添加.修改.删除.排序.分页.各种条件的查询封装成通用模块,不用手写SQL.       B.Spring Security安全权限管理,认证和授权.不仅可管理各个功能模块的权限,也可管理功能模块里的页面按钮权限. JavaEE企业开发框架,简称JEEFW[JavaEE Framework],是我们软件组为了快速开发各种B/S产品,花费几个月而开发的企业开发框架.该框架经过测试组的测试,已应用到多个项目. JavaEE企业开发框架前端采用最受欢迎的HTML.CSS

Java+Bootstrap、jQuery、HTML5、Spring MVC、Hibernate高性能

A.快速开发.框架的数据持久层将添加.修改.删除.排序.分页.各种条件的查询封装成通用模块,不用手写SQL.       B.Spring Security安全权限管理,认证和授权.不仅可管理各个功能模块的权限,也可管理功能模块里的页面按钮权限. JavaEE企业开发框架,简称JEEFW[JavaEE Framework],是我们软件组为了快速开发各种B/S产品,花费几个月而开发的企业开发框架.该框架经过测试组的测试,已应用到多个项目. JavaEE企业开发框架前端采用最受欢迎的HTML.CSS