jQuery UI draggable+droppable+resizable+selectable+sortable

时间:2022-12-06 15:53:58
<script language="JavaScript" type="text/javascript" src="ui/jquery-1.8.2.js"></script>
<script language="JavaScript" type="text/javascript" src="ui/jquery-ui-1.9.1.custom.js"></script>
<!--<script language="JavaScript" type="text/javascript" src="ui/jquery.ui.datepicker-zh-CN.js"></script>-->
<link rel="stylesheet" type="text/css" href="ui/jquery-ui-1.9.1.custom.css">


<!--==============================draggable===========================-->
<!--==================================================================-->
<input type="button" value="draggable_fun" onclick="draggable_fun();" />
<div id="draggable_div" class="ui-widget-content"><!--将想要可拖拽的部分用div括起来,也可以用其他网页标签括起来,被括起来的地方可添加任意内容-->
    <p>Drag me around</p>
    <br/>
    i can fly!
</div>
<script language="JavaScript" type="text/javascript">
$("#draggable_div").draggable({
    //=================属性
    addClasses             : true,                  //如果设置成false,将在加载时阻止ui-draggable样式的加载。当有很多对象要加载draggable()插件的情况下,这将对性能有极大的优化。默认值  true
    appendTo               : "parent",              //用来指定控件在拖拽过程中ui.helper的容器, 默认情况下, ui.helper使用和初始定义的draggable相同的容器, 也就是其父元素.默认值  "parent"
    axis                   : false,                 //约束拖拽的动作只能在X轴或Y轴上执行,可选值:"数值", "数值"。默认值  false
    cancel                 : "input",               //防止在指定的对象上开始拖拽可用JQuery选择器写法来指定。默认值  "input,textarea,button,select,option"
    connectToSortable      : false,                 //允许draggable被拖拽到指定的sortables中可用JQuery选择器写法来指定,如果使用此选项helper属性必须设置成clone才能正常工作。默认值  false
    containment            : false,                 //强制draggable只允许在指定元素或区域的范围内移动,可选值:"parent", "document", "window", [ 数值, 数值, 数值, 数值 ].默认值  false
    cursor                 : "auto",                //指定在做拖拽动作时,鼠标的CSS样式。默认值  "auto"
    cursorAt               : {                      //当开始移动时,鼠标定位在的某个位置上(最多两个方向)。可选值:{ top, left, right, bottom }.默认值  false
        left : 5
    },
    delay                  : 0,                     //当鼠标点下后,延迟指定时间后才开始激活拖拽动作(单位:毫秒)。此选项可以用来防止不想要的拖累元素时的误点击。默认值  0
    disabled               : false,                 //如果设成true则draggable实例不能使用。默认值  false
    distance               : 1,                     //当鼠标点下后,只有移动指定像素后才开始激活拖拽动作。默认值  1
    grid                   : false,                 //拖拽元素时,只能以指定大小的方格进行拖拽。可选值: [数值,数值] 默认值  false
    handle                 : false,                 //限制只能在拖拽元素内的指定元素开始拖拽,可用JQuery选择器写法来指定。默认值  false
    helper                 : "original",            //拖拽元素时的显示方式。(如果是函数,必须返回值是一个DOM元素)可选值:"original", "clone", Function默认值  "original"
    iframeFix              : true,                  //可防止当mouseover事件触发拖拽动作时,移动过iframes并捕获到它(内部内容),如果设置成true,则屏蔽层会覆盖页面的iframe。如果设置成对应的选择器,则屏蔽层会覆盖相匹配的iframe。默认值  false
    opacity                : 0.35,                  //当元素开始拖拽时,改变元素的透明度。默认值  false
    refreshPositions       : false,                 //如果设置成true,所有移动过程中的坐标都会被记录。(注意:此功能将影响性能)默认值  false
    revert                 : false,                 //当元素拖拽结束后,元素回到原来的位置。默认值  false
    revertDuration         : 500,                   //当元素拖拽结束后,元素回到原来的位置的时间。(单位:毫秒)默认值  500
    scope                  : "default",             //设置元素只允许拖拽到具有相同scope值的元素。默认值  "default"
    scroll                 : true,                  //如果设置为true,元素拖拽至边缘时,父容器将自动滚动。默认值  true
    scrollSensitivity      : 20,                    //当元素拖拽至边缘时,父窗口一次滚动的像素。默认值  20
    scrollSpeed            : 20,                    //当元素拖拽至边缘时,父窗口滚动的速度。默认值  20
    snap                   : "div",                 //当设置为true或元素标签时,元素拖拽到其它元素的边缘时,会自动吸附其它元素。默认值  false
    snapMode               : "both",                //确定拖拽的元素吸附的模式。可选值:"inner", "outer", "both"默认值  "both"
    snapTolerance          : 20,                    //确定拖拽的元素移动至其它元素多少像素的距离时,发生吸附的动作。默认值  20
    stack                  : "div",                 //控制匹配元素的z-index值,使当前拖拽的对象始终在匹配元素之前,而且似乎要控制匹配的元素只能以其HTML标签名来匹配.默认值  false
    zIndex                 : 100,                   //控制当拖拽元素时,改变元素的z-index值。默认值  false

    //=================事件
    create                 : function(event, ui){   //当创建draggable时触发
        //alert("this is create");
    },
    start                  : function(event, ui){   //当鼠标开始拖拽时,触发此事件。
        //alert("this is start");
    },
    drag                   : function(event, ui){   //当鼠标拖拽移动时,触发此事件。
        //alert("this is drag");
    },
    stop                   : function(event, ui){   //当移动结束鼠标松开时,触发此事件。
        //alert("this is stop");
    }
});

function draggable_fun(){
    //=================方法
    //$( "#draggable_div" ).draggable("destroy");              //从元素中移除拖拽功能。
    $( "#draggable_div" ).draggable("disable");                //禁用元素的拖拽功能。
    $( "#draggable_div" ).draggable("enable");                 //启用元素的拖拽功能。
    $( "#draggable_div" ).draggable("option","disabled",false);//为指定属性赋值,第二参数为draggable的一个属性名,第三参数为可以为该属性赋的值
    $( "#draggable_div" ).draggable("option","disabled");      //获取指定属性的值,第二参数为draggable的一个属性名
    $( "#draggable_div" ).draggable("widget");                 //返回该可拖拽元素的JQuery对象
}
</script>




<!--==============================droppable===========================-->
<!--==================================================================-->
<input type="button" value="droppable_fun" onclick="droppable_fun();" />
<div id="droppable_div" class="ui-widget-content"><!--将想要可拖放的部分用div括起来,也可以用其他网页标签括起来,被括起来的地方可添加任意内容-->
    <p>Drop here</p>
</div>
<script language="JavaScript" type="text/javascript">
$("#droppable_div").droppable({
    //=================属性
    accept        : "*",                                   //仅允许符合JQuery选择器的元素激活拖放的事件。(如果是函数,则此函数会在页面上所有元素被调用,函数的返回值必须是布尔值。)默认值  "*"
    activeClass   : "ui-state-highlight",                  //如果设置值,则当有拖拽事件发生时,为页面上所有允许(accept)的元素添加此样式。默认值  false
    addClasses    : true,                                  //设置为false,可以阻止ui-droppable样式添加至可拖放的对象。(这样可以获取一定的性能优化) 默认值  true
    disabled      : false,                                 //如果设成true则droppable实例不能使用。默认值  false
    greedy        : false,                                 //是否防止嵌套的droppable事件被传播。默认值  false
    hoverClass    : "drop-hover",                          //当拖拽元素移至带有可拖放插件的元素上时,为元素添加指定的样式。默认值  false
    scope         : "default",                             //设置元素只允许具有相同scope值拖拽元素激活此拖放元素。默认值  "default"
    tolerance     : "touch",                               /*判断一个可拖拽元素被“放到”一个可拖放元素的判断模式。(可选值:"fit", "intersect", "pointer", "touch")默认值  "intersect"
                                                             fit:拖拽元素完全覆盖拖放元素
                                                             intersect:拖拽元素至少50%覆盖拖放元素
                                                             pointer:鼠标指针重叠在可拖放元素上
                                                             touch:只要有任何重叠即发生
                                                           */
    //=================事件
    create        : function(event, ui) {                  //当创建droppable时触发
        //alert("this is create");
    },
    activate      : function(event, ui) {                  //当任何可拖拽元素开始拖拽动作时激活此事件。
        //alert("this is activate");
    },
    deactivate    : function(event, ui) {                  //当任何可拖拽元素停止拖拽动作时激活此事件。
        //alert("this is deactivate");
    },
    over          : function(event, ui) {                  //当一个被允许(accept)的可拖拽元素移动并覆盖可拖放元素时激活。
        //alert("this is over");
    },
    out: function(event, ui) {                             //当一个被允许(accept)的可拖拽元素移出可拖放元素时激活。
        //alert("this is out");
    },
    drop: function(event, ui) {                            //当一个被允许(accept)的可拖拽元素移动并覆盖可拖放元素,松开鼠标时激活。
        //alert("this is drop");
    }
});

function droppable_fun(){
    //=================方法
    //$( "#droppable_div" ).droppable("destroy");                         //从元素中移除拖放功能。
    $( "#droppable_div" ).droppable("disable");                           //禁用元素的拖放功能。
    $( "#droppable_div" ).droppable("enable");                            //启用元素的拖放功能。
    $( "#droppable_div" ).droppable("option","disabled",false);           //为指定属性赋值,第二参数为droppable的一个属性名,第三参数为可以为该属性赋的值
    $( "#droppable_div" ).droppable("option","disabled");                 //获取指定属性的值,第二参数为droppable的一个属性名
    $( "#droppable_div" ).droppable("widget");                            //返回该可拖放元素的JQuery对象
}
</script>




<!--==============================resizable===========================-->
<!--==================================================================-->
<input type="button" value="resizable_fun" onclick="resizable_fun();" />
<div id="resizable_div" class="ui-widget-content">
    <h3 class="ui-widget-header">Resizable</h3>
</div>
<script language="JavaScript" type="text/javascript">
$("#resizable_div").resizable({
    //=================属性
    alsoResize       : false,                                  //当调整元素大小时,同步改变符合JQuery选择器的另一个(或一组)元素的大小。默认值  false
    animate          : true,                                   //在调整元素大小结束之后是否显示动画默认值  false
    animateDuration  : "slow",                                 //动画效果的持续时间。(单位:毫秒)可选值:"slow" , "normal" , "fast" 默认值  "slow"
    animateEasing    : "easeOutBounce",                        //选择何种动画效果。默认值  "swing"
    aspectRatio      : false,                                  //如果设置为true,则元素的可调整尺寸受原来高宽比的限制。例如:9 / 16, or 0.5 默认值  false
    autoHide         : false,                                  //如果设置为true,则默认隐藏掉可调整大小的手柄,除非鼠标移至元素上。默认值  false
    cancel           : "input,textarea,button,select,option",  //阻止resizable插件加载在与你匹配的元素上。默认值  "input,textarea,button,select,option"
    containment      : false,                                  //控制元素只能在某一个元素的大小之内改变。允许值:"parent" , "document" , DOM元素 , 或一个选择器。默认值  false
    delay            : 0,                                      //以毫秒为单位,当发生鼠标点击手柄改变大小,延迟多少毫秒后才激活事件。默认值  0
    disabled         : false,                                  //如果设成true则resizable实例不能使用。默认值  false
    distance         : 1,                                      //以像素为单位,当发生鼠标点击手柄改变大小,延迟多少像素后才激活事件。默认值  1
    ghost            : true,                                   //如果设置为true,则在调整元素大小时,有一个半透明的辅助对象显示。默认值  false
    grid             : false,                                  //设置元素调整的大小随网格变化,允许的数据为数组:[数值,数值]。默认值  false
    handles          : "e, s, se",                             //设置resizable插件允许生成在元素的哪个边上,可选值:n, e, s, w, ne, se, sw, nw, all。默认值  "e, s, se"
    helper           : "resizable-helper",                     //一个CSS类,当调整元素大小时,将被添加到辅助元素中,一但调整结束则恢复正常。默认值  false
    maxHeight        : 1500,                                   //设置允许元素调整的最大高度。默认值  null
    maxWidth         : 1500,                                   //设置允许元素调整的最大宽度。默认值  null
    minHeight        : 10,                                     //设置允许元素调整的最小高度。默认值  10
    minWidth         : 10,                                     //设置允许元素调整的最小宽度。默认值  10

    //=================事件
    create           : function(event, ui) {                   //当创建resizable时触发
        //alert("this is create");
    },
    start            : function(event, ui) {                   //当元素调整动作开始时触发。
        //alert("this is start");
    },
    resize           : function(event, ui) {                   //当元素调整动作过程中触发。
        //alert("this is resize");
    },
    stop             : function(event, ui) {                   //当元素调整动作结束时触发。
        //alert("this is stop");
    }
});

function resizable_fun(){
    //=================方法
    //$("#resizable_div").resizable("destroy");               //从元素中移除缩放功能。
    $("#resizable_div").resizable("disable");                 //禁用元素的缩放功能。
    $("#resizable_div").resizable("enable");                  //开启元素的缩放功能。
    $("#resizable_div").resizable("option","disabled",false); //为指定属性赋值,第二参数为resizable的一个属性名,第三参数为可以为该属性赋的值
    $("#resizable_div").resizable("option","disabled");       //获取指定属性的值,第二参数为resizable的一个属性名
    $("#resizable_div").resizable("widget");                  //返回该可缩放元素的JQuery对象
}
</script>











<!--==============================selectable==========================-->
<!--==================================================================-->
<!--
创建多选实例前必须至少先指定两个css类的背景色 .ui-selecting .ui-selected 分别是在可选元素被选择时,和选定后添加的css类
并且为了灵活定义多个可多选部分不同的样式,在定义该css类时最好加上所属作用范围这里是#selectable_div
-->
<style>
    #selectable_div .ui-selecting { background: #FECA40; }/*选择某个项目时添加该css类*/
    #selectable_div .ui-selected { background: #F39814;  }/*选定了某个项目时添加该css类*/

    /*这个样式类则显得不那么重要了,可以不设定,可被多选的元素将添加该css类*/
    .ui-selectee { background: white;  }
</style>
<input type="button" value="selectable_fun" onclick="selectable_fun();" />
<!--通过按 Ctrl 可以点击选择多项-->
<div id="selectable_div">
    <div class="ui-widget-content">Item 1</div>
    <div class="ui-widget-content">Item 2</div>
    <div class="ui-widget-content">Item 3</div>
    <div class="ui-widget-content">Item 4</div>
    <div class="ui-widget-content">Item 5</div>
    <div class="ui-widget-content">Item 6</div>
    <div class="ui-widget-content">Item 7</div>
    <div class="ui-widget-content">Item 8</div>
    <div class="ui-widget-content">Item 9</div>
</div>
<script language="JavaScript" type="text/javascript">
$("#selectable_div").selectable({
    //=================属性
    appendTo            : "body",                             //指定选择过程中将辅助元素追加到何处。默认值  "body"
    autoRefresh         : true,                               //决定是否在每次选择动作时,都重新计算每个选择元素的坐标和大小。如果你有很多个选择项的话,建议设置成false并通过方法手动刷新。默认值  true
    cancel              : "textarea,button,select,option",    //防止在与选择器相匹配的元素上发生选择动作。默认值  "input,textarea,button,select,option"
    delay               : 0,                                  //以毫秒为单位,设置延迟多久才激活选择动作。此参数可防止误点击。默认值  0
    disabled            : false,                              //如果选择true则该selectable实例将不能使用。默认值  false
    distance            : 0,                                  //决定至少要在元素上面拖动多少像素后,才正式触发选择的动作。默认值  0
    filter              : "*",                                //设置哪些子元素才可以被选择。默认值  "*"
    tolerance           : "touch",                            //可选值:"touch", "fit",分别代表完全和部署覆盖元素即触发选择动作。默认值  "touch"
    //=================事件
    create              :function(event, ui) {
        //alert("this is create");                            //当创建selectable时触发
    },
    selected            :function(event, ui) {                //当选定某一个元素后触发此事件。
         //alert("this is selected");
     },
    selecting           :function(event, ui) {                //当选择某一个元素中时触发此事件。
         //alert("this is selecting");
     },
    start               :function(event, ui) {                //当选择一个元素前触发此事件。
         //alert("this is start");
     },
    stop                :function(event, ui) {               //当选定一个元素结束时触发此事件。
         //alert("this is stop");
     },
    unselected          :function(event, ui) {               //当取消选定某一个元素后触发此事件。
        //alert("this is unselected");
    },
    unselecting         :function(event, ui) {               //当取消选定某一个元素中触发此事件。
        //alert("this is unselecting");
    }
});
function selectable_fun(){
    //=================方法
    //$("#selectable_div").selectable("destroy");             //销毁元素多选功能实例
    $("#selectable_div").selectable("disable");               //禁用元素的多选功能。
    $("#selectable_div").selectable("enable");                //启用元素的多选功能。
    $("#selectable_div").selectable("option","disabled",true);//为指定属性赋值,第二参数为selectable的一个属性名,第三参数为可以为该属性赋的值
    $("#selectable_div").selectable("option","disabled");     //获取指定属性的值,第二参数为selectable的一个属性名
    $("#selectable_div").selectable("refresh");               //用于手动刷新、重新计算每个选中元素的位置和大小。当autoRefresh设置成false,此方法对于刷新大量选中项非常有用。
    $("#selectable_div").selectable("widget");                //返回该可多选元素的JQuery对象
}
</script>








<!--==============================sortable============================-->
<!--==================================================================-->
<input type="button" value="sortable_fun" onclick="sortable_fun();" />
<div id="sortable_div">
    <div class="ui-state-default">Item 1</div>
    <div class="ui-state-default">Item 2</div>
    <div class="ui-state-default">Item 3</div>
    <div class="ui-state-default">Item 4</div>
    <div class="ui-state-default">Item 5</div>
    <div class="ui-state-default">Item 6</div>
    <div class="ui-state-default">Item 7</div>
</div>
<script language="JavaScript" type="text/javascript">
$("#sortable_div").sortable({
    //=================属性
    appendTo              : "parent",                                           //指定排序过程中将辅助元素追加到何处。默认值  "parent"
    axis                  : "y",                                                //指定条目的拖动方向。可选值:"x", "y"。默认值  false
    cancel                : ":input,button",                                    //指定禁止排序的元素。默认值  ":input,button"
    connectWith           : false,                                              //允许排序列表连接另一个排序列表,将条目拖动至另一个列表中去,可用JQuery选择器形式。默认值  false
    containment           : false,                                              //约束排序动作只能在一个指定的范围内发生。可选值:DOM对象, "parent", "document", "window", 或jQuery对象。默认值  false
    cursor                : "move",                                             //指定排序时鼠标的CSS样式。默认值  "auto"
    cursorAt              : {                                                   //指定拖动条目时,光标出现的位置,取值是对象,可以包含top、left、right、Bottom属性中的一个或两个。 默认值 false
        top:5,
        left: 5
    },
    delay                 : 0,                                                  //以毫秒为单位,设置延迟多久才激活排序动作。此参数可防止误点击。默认值  0
    disabled              : false,                                              //当设为true时该排序实例将不可用。默认值  false
    distance              : 1,                                                  //决定至少要在元素上面拖动多少像素后,才正式触发排序动作。默认值  1
    dropOnEmpty           : true,                                               //是否允許拖拽到一個空列表的sortable对象中。默认值  true
    forceHelperSize       : false,                                              //是否强制辅助元素具有尺寸。默认值  false
    forcePlaceholderSize  : false,                                              //是否强制占有符具有尺寸。默认值  false
    grid                  : [ 20, 10 ],                                         //使条目或辅助元素对齐网格,取值为数组 [数值,数值] 分别表示网格的宽度和高度。默认值  false
    handle                : false,                                              //指定条目的拖动手柄,可用JQuery选择器形式。默认值  false
    helper                : "original",                                         //指定显示的辅助元素,可选值:"original"或"clone",若为函数则函数返回一个DOM元素。默认值  "original"
    items                 : "> *",                                              //指定列表中可以排序的条目。默认值  "> *"
    opacity               : 0.5,                                                //指定辅助元素的不透明度0.01~1。默认值  false
    placeholder           : "sortable-placeholder",                             //指定排序时,空白占位的CSS样式。默认值  false
    revert                : true,                                               //是否支持动画效果,或指定动画毫秒数。默认值  false
    scroll                : true,                                               //是否元素拖动到边缘时自动滚动。默认值  true
    scrollSensitivity     : 20,                                                 //指定元素拖动到距离边缘多少像素时开始滚动。默认值  20
    scrollSpeed           : 20,                                                 //指定滚动的速度。默认值  20
    tolerance             : "intersect",                                        //设置拖动元素拖动多少距离时开始排序,可选值:"intersect"和"pointer",前者表示重叠50%,后者表示重叠。默认值  "intersect"
    zIndex                : 1000,                                               //指定辅助元素的z-Index值。默认值  1000
    //=================事件
    create                :function(event, ui) {                                //当创建sortable实例时触发
        //alert("this is create");
    },
    start                 :function(event, ui) {                                //当开始排序时触发
        //alert("this is start");
    },
    sort                  :function(event, ui) {                                //当排序期间触发
        //alert("this is sort");
    },
    change                :function(event, ui) {                                //当元素发生排序且坐标已发生改变时触发此事件。
        //alert("this is change");
    },
    beforeStop            :function(event, ui) {                                //当排序动作结束之前触发此事件。此时占位符元素和辅助元素仍有效。
        //alert("this is beforeStop");
    },
    stop                  :function(event, ui) {                                //排序动作结束时触发此事件。
        //alert("this is stop");
    },
    update                :function(event, ui) {                                //当排序动作结束时且元素坐标已经发生改变时触发此事件。
        //alert("this is update");
    },
    receive               :function(event, ui) {                                //当一个已连接的sortable对象接收到另一个sortable对象的元素后触发此事件。
        //alert("this is receive");
    },
    remove                :function(event, ui) {                                //当一个元素从一个sortable对象拖了出来,并进入另一个sortable对象时触发
        //alert("this is remove");
    },
    over                  :function(event, ui) {                                //当一个元素拖拽移动时覆盖其他元素位置时触发此事件。
        //alert("this is over");
    },
    out                   :function(event, ui) {                                //当一个元素拖拽移出原位置并再次确定位置后,或移动超出sortable对象位置范围时触发此事件。
        //alert("this is out");
    },
    activate              :function(event, ui) {                                //当一个sortable对象开始排序动作时,该事件关联到所有与该实例连接着的排序列表。
        //alert("this is activate");
    },
    deactivate            :function(event, ui) {                                //当排序停止后触发,该事件关联到所有与该实例连接着的排序列表
        //alert("this is deactivate");
    }

});

function sortable_fun(){
    //=================方法
    $("#sortable_div").sortable( "cancel" );                                    //取消当前sortable对象中item元素的排序改变。
    //$("#sortable_div").sortable( "destroy" );                                 //销毁该sortable对象。
    $("#sortable_div").sortable( "disable" );                                   //禁用该sortable对象排序功能
    $("#sortable_div").sortable( "enable" );                                    //开启该sortable对象排序功能
    $("#sortable_div").sortable( "option" , "disabled" , false );               //为指定属性赋值,第二参数为sortable的一个属性名,第三参数为可以为该属性赋的值
    $("#sortable_div").sortable( "option" , "disabled" );                       //获取指定属性的值,第二参数为sortable的一个属性名
    $("#sortable_div").sortable( "refresh" );                                   //刷新排序的元素。触发重新加载的所有排序的元素,使新元素可用。
    $("#sortable_div").sortable( "refreshPositions" );                          //刷新排序条目的缓存位置
    $("#sortable_div").sortable( "serialize", { key: "sort" } );                //将项目ID排序成一个form或ajax的提交字符串,提交时key对应的值相当表单中的元素名,调用此方法产生的哈希值,可以附加到任何URL
    $("#sortable_div").sortable( "toArray" );                                   //将排序的条目id序列化成字符串数组
    $("#sortable_div").sortable( "widget" );                                    //返回该排序的JQuery对象
}
</script>