JQuery UI Sortable拖动排序布局使用入门(一)

最近在学习JQuery UI Sortable拖动排序布局,想在【易可导航】 上实现一个自定义拖拽式布局的页面,特将自己学习过程记录下来,重要信息如下:
 官方网址:Sortable | jQuery UI
 中文文档:jQuery UI API – 可排序小部件(Sortable Widget) | 菜鸟教程

网页代码如下:

<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>自定义办公导航-一个可以赚钱的自定义网址导航-导航页布局</title>
<link rel="shortcut icon" href="AdminPages/source/images/favicon.ico"type="imagend.microsoft.icon"/>
<meta name="pragma" content="no-cache" />
<meta name="cache-control" content="no-cache"/>
<meta name="expires" content="0"/>
<meta name="keywords" content="keyword1,keyword2,keyword3"/>
<meta name="description" content="This is my page"/>
<meta name="renderer" content="webkit"/>
<!-- 页面小图标 -->
<link rel="stylesheet" href="AdminPages/source/css/font-awesome.min.css"/>
<link rel="stylesheet" href="AdminPages/source/jqueryui/jquery-ui.min.css"/>
<link rel="stylesheet" href="AdminPages/source/jqueryui/jquery-ui.theme.min.css"/>
<style>
 #sortable { list-style-type: none; margin: 0; padding: 0; width: 1300px; } 
 #sortable li { margin: 3px 3px 3px 0; padding: 1px; float: left; width: 150px; height: 20px;text-align: center; } 
</style>
</head>
<body>
	<form action="" method="post" id="formid">
	<%@ include file="/AdminPages/public/header.jspf"%>
		<section class="siteCrumbs">
			<div class="container">
				自定义导航页面排版
			</div>
		</section>
			<section class="siteMain">
			<div class="container">
				<!-- <div class="container-bd edit-product-form"> -->
    <fieldset>
    <legend>选择网址(每行8列,一页8行,只保存选中的前64个网址),上下左右拖动网址来排列布局: </legend>
					<ul id="sortable" class="sortable">
					<c:forEach items="${oflist}" var="fun" varStatus="status">
					<li class="ui-state-default">
					 <label for="checkbox-nested-${status.index+1}">
                     <input type="checkbox" name="ofid" id="checkbox_${status.index+1}" value="${fun.id}" style="margin-left: 1px">
					 ${fun.websiteName}
                     </label>
					</li>
					</c:forEach>
					</ul>	
		</fieldset>	
	<fieldset>
    <legend>请勾选: </legend>
    <label for="checkbox-selectall">全选</label>
    <input type="checkbox" name="selectall" id="selectall" onchange="checkboxGetAll(this)">
    </fieldset>		
					
				<!-- </div> -->
				<br>
				<div class="items">
					<input type="button" class="btn btn-saves" value='提交' onclick="formsubmittest()"/>
					<input  type="reset" class="btn btn-saves"  value='取消'  onclick="closedDialog();"/>
				</div>
			</div>
		</section>
</form>

<!-- -界面UI必须 -->
<script type="text/javascript" src="AdminPages/source/jqueryui/jquery.js"></script>
<script type="text/javascript" src="AdminPages/source/jqueryui/jquery-ui.min.js"></script>
<!-- <script type="text/javascript" src="AdminPages/source/js/jquery.min.js"></script> -->
<!-- <script type="text/javascript" src="AdminPages/source/js/ui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="AdminPages/source/js/ui/easyui.myvalidator.js"></script> -->
<!-- -界面UI必须 -->

<script type="text/javascript">
     //页面初始化
	$(function(){
	//设置数组
     $("#sortable").sortable({
     grid:[8,8],//
     opacity: 0.9, //不透明度。从 0.01 到 1
     revert: true,  //当设置为 true,该项目将会使用动画,动画使用默认的持续时间。
     scroll: false, //如果设置为 true ,当到达边缘时页面会出现滚动条。false
     tolerance: "pointer",//指定用于测试项目被移动时是否覆盖在另一个项目上的模式
     items: ">li",//指定元素内的哪一个项目应是 sortable。
     update:function(event,ui){  //更新排序之后
     alert(ui.item);//把排序的ID弹出
     var text="排序为:";
     $("li input").each(function(i,elment){
     console.log("index====" +i);
     console.log("value====" +elment.id);
     text = text+$(this).attr("id")+" ";
           //text = text+ui.item.attr("id")+" ";
      });
    alert(text);//把排序的ID弹出
    }
    });
    //禁用选择,防止拖拽时选中文本内容!
    $("#sortable").disableSelection(); 
    });
     function formsubmittest(){
     //序列化 sortable 的项目 id 为一个字符串的数组
     var sortedIDs = $("#sortable").sortable("toArray");
     alert(sortedIDs.length);
     alert(sortedIDs);
     var sorted = $("#sortable").sortable("serialize",{key:"sort"});
     //var sorted = $("#sortable").sortable("serialize");
     alert("sorted="+sorted);
     //var sorted2=decodeURIComponent(sorted,true);
     var sorted2=decodeURIComponent(sorted);
     alert("sorted2="+sorted2);
    for(var ss in sortedIDs){
       //alert(ss);
       console.log("id====" +ss);
       //console.log("id====" +ss.attribute("id"));
     }
     /* $.each(sortedIDs, function(i, item) {
     console.log(i + "====" + item.text());
     $.each(item, function(j, val) {
     console.log(j + "====" + val);
     });
     } 
     );*/


     }
     
     //勾选所有的
     function checkboxGetAll(checkbox){
     var checkboxlist=$("input[type='checkbox']");
     if (checkbox.checked == true){
     alert('选中');
     if(checkboxlist.length>0){
     for(var i=0;i<checkboxlist.length;i++){
     var checkb=checkboxlist[i];
     checkb.checked=true;
     }
     }
     
     }else{
     alert('取消');
     if(checkboxlist.length>0){
     for(var i=0;i<checkboxlist.length;i++){
     var checkb=checkboxlist[i];
     checkb.checked=false;
     }
     }
     }
     }

</script>
</body>

</html>

页面效果如下图:

具体功能可以登录www.onekbit.com后台进入自定义网址导航页排版查看。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于jQuery UI Sortable的表格拖拽表头整列都会改变的完整代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jQuery UI Sortable</title> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <style> table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; cursor: pointer; } .ui-state-highlight { height: 1.5em; line-height: 1.2em; border: 1px dashed red; } </style> </head> <body> <table id="sortable"> <thead> <tr> <th data-col="0">Name</th> <th data-col="1">Age</th> <th data-col="2">Country</th> <th data-col="3">Job</th> </tr> </thead> <tbody> <tr> <td>John</td> <td>28</td> <td>USA</td> <td>Developer</td> </tr> <tr> <td>Jane</td> <td>32</td> <td>Canada</td> <td>Designer</td> </tr> <tr> <td>James</td> <td>25</td> <td>UK</td> <td>Manager</td> </tr> </tbody> </table> <script src="//code.jquery.com/jquery-3.6.0.min.js"></script> <script src="//code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> <script> $(function() { $("#sortable thead th").click(function() { var colIndex = $(this).index(); var sortOrder = $(this).hasClass("asc") ? "desc" : "asc"; $(this).closest("table").find("tbody tr").each(function() { var $cell = $(this).find("td").eq(colIndex); var value = $cell.text(); $cell.data("value", value); }); $(this).closest("table").find("tbody tr").sort(function(a, b) { var aVal = $(a).find("td").eq(colIndex).data("value"); var bVal = $(b).find("td").eq(colIndex).data("value"); if (sortOrder === "asc") { return aVal.localeCompare(bVal); } else { return bVal.localeCompare(aVal); } }).appendTo($(this).closest("table").find("tbody")); $(this).closest("table").find("thead th").removeClass("asc desc"); $(this).addClass(sortOrder); }).disableSelection(); $("#sortable").sortable({ axis: "x", handle: "th", placeholder: "ui-state-highlight", start: function(e, ui) { ui.placeholder.width(ui.helper.outerWidth()); }, update: function(e, ui) { var $table = ui.item.closest("table"); var thIndex = ui.item.index(); $table.find("tr").each(function() { $(this).find("td, th").eq(thIndex).detach().appendTo($(this)); }); } }).disableSelection(); }); </script> </body> </html> ``` 上述代码中,我们首先创建了一个表格,其中thead中的每个th元素都有一个data-col属性,用于指示该列的索引(从0开始)。 然后,我们使用jQuery UI Sortable使表头可拖拽排序,并在update事件中实现了拖拽整列的功能。具体来说,我们使用了axis、handle、placeholder、start和update参数来实现这个功能。 最后,我们使用了click事件来实现列排序的功能。具体来说,我们为每个th元素添加了click事件,用于更新tbody中的行的顺序。我们还使用了localeCompare函数来比较字符串的值,并使用addClass和removeClass函数来切换排序方向。 需要注意的是,为了防止拖拽时选择文本,我们使用了disableSelection函数来禁用了文本选择功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值