jQuery之排序组件的深入解析
2023-06-13 09:15:02 时间
简单实例:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>sortable组件</title>
<scriptlanguage="javascript"src="js/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.core.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.widget.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.mouse.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.sortable.js"></script>
<linkhref="CSS/base/jquery.ui.all.css"rel="stylesheet"type="text/css"/>
<styletype="text/css">
body{
text-align:center;
margin:0auto;
padding:0;
}
#wrap{
margin:10pxauto10pxauto;
padding:5px;
width:450px;
height:300px;
background:#fff;
border:5pxsolid#000;
}
h1{
color:#006;
font-size:24px;
font-weight:bold;
margin-bottom:2px;
text-align:center;
}
#sortable{
list-style-type:none;
margin:0;
padding:0;
width:100%;
}
#sortableli{
margin:3px;
padding:0.4em;
font-size:16px;
height:18px;
}
#sortablelispan{
position:absolute;
margin-left:-1.3em;
}
</style>
<scripttype="text/javascript">
$(document).ready(function(){
$("#sortable").sortable(); //将sortable变成可排序的
$("#sortable").disableSelection(); //使文本不可被选中
});
</script>
</head>
<body>
<divid="wrap">
<h1>拖动鼠标调整下列选项的顺序</h1>
<ulid="sortable">
<liclass="ui-widget-content">星期一</li>
<liclass="ui-widget-content">星期二</li>
<liclass="ui-widget-content">星期三</li>
<liclass="ui-widget-content">星期四</li>
<liclass="ui-widget-content">星期五</li>
<liclass="ui-widget-content">星期六</li>
<liclass="ui-widget-content">星期七</li>
</ul>
</div>
</body>
</html>
效果图:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>sortable组件</title>
<scriptlanguage="javascript"src="js/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.core.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.widget.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.mouse.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.sortable.js"></script>
<linkhref="CSS/base/jquery.ui.all.css"rel="stylesheet"type="text/css"/>
<styletype="text/css">
.message_box{
width:180px;
height:200px;
filter:dropshadow(color=#666666,offx=3,offy=3,positive=2);
float:left;
margin-right:10px;
}
#mask{
position:absolute;
top:0;
left:0;
width:expression(body.clientWidth);
height:expression(body.clientHeight);
background:#666;
filter:ALPHA(opacity=60);
z-index:1;
visibility:hidden
}
.message{
border:#036solid;
border-width:1131;
width:95%;
height:95%;
color:#036;
font-size:12px;
line-height:150%;
background:#FFF
}
.header{
background:#036;
height:22px;
font-family:Verdana,Arial,Helvetica,sans-serif;
font-size:12px;
padding:3px5px0px10px;
color:#fff;
cursor:move;
}
ul{
margin-left:10px;
margin-right:10px;
background:#eee;
padding:5px;
width:150px;
}
li{
font-size:14px;
}
.headerdiv{
display:inline;
width:150px;
}
.headerspan{
float:right;
display:inline;
cursor:hand;
}
.file,.folder{
width:60px;
float:left;
margin-right:10px;
}
.fileem,.folderem{
clear:both;
font-size:12px;
font-style:normal;
text-decoration:underline;
}
.droppable{
height:200px;
overflow:auto;
}
#res{
clear:both
}
</style>
<scripttype="text/javascript">
$(document).ready(function(){
varmsg="";
functioncallback(e,ui){
if(e.type=="sortstart"){
msg="你选择了游戏:"+ui.item.text();
$("#res").empty();
}elseif(e.type=="sortremove"){
msg+=",从列表"+e.target.id;
}elseif(e.type=="sortreceive"){
msg+="移至列表"+e.target.id+"。";
}elseif(e.type=="sortstop"){
$("#res").append(msg);
}
}
$("ul").sortable({
connectWith:"ul",
start:callback,
remove:callback,
receive:callback,
stop:callback
}).disableSelection();
$("#sortable2").sortable({"dropOnEmpty":false});
});
</script>
</head>
<body>
<divid="message_box1"class="message_box">
<divclass="message">
<divclass="header">
<div>休闲类小游戏</div>
<span>×</span></div>
<ulid="sortable1">
<li>菠萝蛋糕</li>
<li>人品计算器</li>
<li>我的恐怖小屋</li>
<li>品茗闻香话茶道</li>
<li>暴打火柴人中文版</li>
</ul>
</div>
</div>
<divid="message_box1"class="message_box">
<divclass="message">
<divclass="header">
<div>动作类小游戏</div>
<span>×</span></div>
<ulid="sortable2">
<li>奥特曼之狼人传说</li>
<li>企鹅战斗机</li>
<li>月蚀之刃</li>
<li>终极拳皇</li>
<li>大满贯决赛</li>
</ul>
</div>
</div>
<divid="message_box1"class="message_box">
<divclass="message">
<divclass="header">
<div>精品游戏</div>
<span>×</span></div>
<ulid="sortable3">
</ul>
</div>
</div>
<divid="res"></div>
</body>
</html>
效果图:
3.1serialize方法:
3.2toArray方法:该方法将可排序元素的id序列化为一个字符串数组,语法格式如下:
3.3refresh方法:方法用于刷新可排序列表
3.4refreshPositons方法:该方法用于刷新可排序元素的缓存位置,语法格式如下:
3.5cancel:方法用于取消当前可排序对象中元素的顺序改变
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>sortable组件</title>
<scriptlanguage="javascript"src="js/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.core.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.widget.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.mouse.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.sortable.js"></script>
<linkhref="CSS/base/jquery.ui.all.css"rel="stylesheet"type="text/css"/>
<styletype="text/css">
body{
text-align:left;
margin:0auto;
padding:0;
}
#wrap{
margin:10pxauto10pxauto;
padding:5px;
width:380px;
height:330px;
background:#fff;
border:5pxsolid#000;
float:left;
}
#result{
margin:10px;
padding:2px;
width:470px;
height:330px;
background:#fff;
border:1pxsolid#999;
float:left;
}
h1{
color:#006;
font-size:24px;
font-weight:bold;
margin-bottom:2px;
text-align:center;
}
#sortable,#connect{
list-style-type:none;
margin:0;
padding:0;
width:100%;
}
#sortableli,#connectli{
margin:3px;
padding:0.4em;
font-size:16px;
height:18px;
}
</style>
<scripttype="text/javascript">
$(document).ready(function(){
$("#sortable").sortable({connectWith:"#connect"});
$("#connect").sortable();
$("#sortable").disableSelection();
$("#btn").click(function(){
varresult=$("#sortable").sortable("serialize",{
connected:true,
attribute:"att",
key:"att",
expression:/^(?:sort_)(.+)$/
});
$("#msg").html($("#msg").html()+result+"<br/>");
});
});
</script>
</head>
<body>
<divid="wrap">
<h1>调整下列课程的安排顺序</h1>
<ulid="sortable">
<liclass="ui-widget-content"att="sort_1.1">1.1链接外部.JS文件</li>
<liclass="ui-widget-content"att="sort_1.2">1.2使用Microsoft脚本编辑器</li>
<liclass="ui-widget-content"att="sort_1.3">1.3使用while循环</li>
<liclass="ui-widget-content"att="sort_1.4">1.4使用for循环</li>
</ul>
<ulid="connect">
<liclass="ui-widget-content"att="sort_2.1">2.1使用Switch语句</li>
<liclass="ui-widget-content"att="sort_2.2">2.2使用Array对象属性</li>
<liclass="ui-widget-content"att="sort_2.3">2.3使用String对象的方法</li>
<liclass="ui-widget-content"att="sort_2.4">2.4使用Date对象的方法</li>
</ul>
</div>
<divid="result">
<inputtype="button"name="button"id="btn"value="确认修改"/>
<pid="msg"></p>
</div>
</body>
</html>
效果图:
这里将att作为键,值为布局中用att定义的字符串。
4.1start:事件类型为sortstart,在开始排序时触发
4.2sort:事件类型为sort,在排序过程中触发
4.3change:事件类型为sortchange,在排序过程中,当元素的位置发生改变时触发
4.4beforestop:事件类型为sortbeforestop,当停止排序但占位符或者辅助元素仍然可用时触发
4.5stop:事件类型为sortstop,当排序过程停止时触发
4.6update:事件类型为sortupdate,当停止排序过程且元素位置已经发生变化时触发
4.7receive:事件类型为sortreceive,当连接的排序列表已从另一个列表接收到一个元素时触发
4.8remove:事件类型为sortremove,当从列表中移出一个可排序元素并将其放置到另一个列表时触发
4.9over:事件类型为sortover,当一个可排序元素被移动到另一个连接列表中时触发
4.10out:事件类型为sortout,当一个可排序元素被移出连接列表时触发
4.11activate:事件类型为sortactivate,当使用连接的排序列表时触发,每个连接列表在拖动开始时均接收此事件
4.12deactivate:事件类型为sortdeactivate,当停止排序操作时触发,此事件将传播到所有可能的连接列表
$("#droppable").droppable({
eventName:function(event,ui){
}
});
helper:
position:一个包含top属性和left属性的对象,表示当前元素相对于原始对象的位置
offset: 一个包含top属性和left属性的对象,表示当前元素相对于页面的绝对位置
item:表示当前拖动的jQuery对象
placeholder:表示定义的占位符
sender:当前拖动元素所属的排序列表,仅适用于两个列表之间移动的情况
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>sortable组件</title>
<scriptlanguage="javascript"src="js/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.core.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.widget.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.mouse.js"></script>
<scripttype="text/javascript"src="js/jquery.ui.sortable.js"></script>
<linkhref="CSS/base/jquery.ui.all.css"rel="stylesheet"type="text/css"/>
<styletype="text/css">
body{
text-align:left;
margin:0auto;
padding:0;
}
#wrap{
margin:10pxauto10pxauto;
padding:5px;
width:300px;
height:250px;
background:#fff;
border:5pxsolid#000;
float:right;
overflow:scroll;
}
h1{
color:#006;
font-size:24px;
font-weight:bold;
margin-bottom:2px;
text-align:left;
}
#sortable{
list-style-type:none;
margin:0;
padding:0;
width:300px;
float:left;
}
#sortableli{
margin:3px;
padding:0.4em;
font-size:14px;
height:18px;
text-align:left;
}
#sortablelispan{
position:absolute;
margin-left:-1.3em;
}
#result{
clear:both;
}
</style>
<scripttype="text/javascript">
$(document).ready(function(){
$("#sortable").sortable({
cursor:"move",
start:eventCallback,
sort:eventCallback,
stop:eventCallback,
change:eventCallback,
beforeStop:eventCallback,
update:eventCallback,
});
functioneventCallback(e,ui){
varcontent="事件类型:"+e.type+"<br/>";
varmessage=$("<span>").text(content);
$("#wrap").append(content);
varpos=$(".ui-widget-content").index(ui.item)+1;
if(e.type=="sortstart"){
msg="元素:"+ui.item.text()+";排序前位置:"+pos;
}else if(e.type=="sortstop"){
msg+=";排序后位置:"+pos;
}
$("#result").text(msg);
}
$("#sortable").disableSelection();
});
</script>
</head>
<body>
<h1>改变下面列车的顺序,查看事件触发结果</h1>
<ulid="sortable">
<liclass="ui-widget-content">K22次始发站:桂林->终点站:北京西</li>
<liclass="ui-widget-content">K180次始发站:郑州->终点站:北京西</li>
<liclass="ui-widget-content">K1038次 郑州 ->终点站:深圳</li>
<liclass="ui-widget-content">K236次 石家庄 ->终点站:上海</li>
<liclass="ui-widget-content">T182次汉口 ->终点站:哈尔滨</li>
<liclass="ui-widget-content">K926次 郑州 ->终点站:哈尔滨</li>
</ul>
<divid="wrap"></div>
<divid="result"></div>
</body>
</html>
相关文章
- jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」
- jQuery File Upload v9.17.0 发布,一个非常优秀的上传组件详解编程语言
- jQuery图片切换插件jquery.cycle.js详解编程语言
- jQuery跨域访问问题解决方法
- javascript模拟JQuery的Ready方法实现并出现的问题
- jQuery温习篇强大的JQuery选择器
- jquery多行滚动代码(附详细解释)
- 用jQuery做更好的组件通用组件定义模式
- jQuery+Flex通过拖拽方式动态改变图片的代码
- jquery.Jwin.js基于jquery的弹出层插件代码
- JQUERY实现左侧TIPS滑进滑出效果示例
- jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
- 2013年优秀jQuery插件整理小结
- jquery创建表格(自动增加表格)代码分享
- jQuery-ui引入后Vs2008的无智能提示问题解决方法
- jquery组件使用中遇到的问题整理及解决
- jquery禁止输入数字以外的字符的示例(纯数字验证码)
- jquery分页插件jpaginate在IE中不兼容问题
- 对jQuery中data方法的误解分析
- jQuery循环动画与获取组件尺寸的方法