jQuery可拖拽排序的列表代码

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery可拖拽排序的列表代码 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

jQuery可拖拽排序的列表代码

HTML代码(index.html):

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>jQuery可拖拽排序的列表代码</title>
<link rel="stylesheet" type="text/css" href="css/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="css/github-dark.css" media="screen">
<style type="text/css">
	html, body, ul, li { margin:0; padding:0; }
	ul, li { list-style-type:none; color:#b5e853; border:1px solid #3f3f3f; }
	ul.sTree, ul{ padding:0px; background-color:#151515; }
	ul.sTree2 li, ul#sortableListsBase li { padding-left:50px; margin:5px; border:1px solid #3f3f3f; background-color:#3f3f3f; }
	li div { padding:7px; background-color:#222; Nborder:1px solid #3f3f3f; }
	li, ul, div { border-radius: 3px; }
	.red { background-color:#ff9999; }
	.blue { background-color:#aaaaff;}
	.green { background-color:#99ff99; }
	.gree2 { background-color:#bbffbb; }
	.yellow { background-color:#ff8; }
	.brown { background-color:#c26b2b; }
	.pT20 { padding-top:20px; }
	.pV10 { padding-top:10px; padding-bottom:10px; }
	.dN { display:none; }
	.zI1000 { z-index:1000; }
	.c1 { color:#b5e853; }
	.c2 { color:#63c0f5; }
	.c3 { color: #f77720; }
	.c4 { color: #888; }
	.bgC1 { background-color:#ccc; }
	.bgC2 { background-color:#ff8; }
	.small1 { font-size:0.8em; }
	.small2 { font-size:0.7em; }
	.small3 { font-size:0.6em; }
	.tAR { text-align:right; }
	.clear { clear:both; }
	img.descPicture { display:block; width:100%; margin:0 7px 30px 0; float:left; cursor:pointer; /*transition: all 0.5s ease;*/ }
	img.descPicture.descPictureClose { width:150px; }
	#sTree2 { margin:10px auto; }
</style>

<script src="js/jquery-git1.min.js"></script>
<script src="js/jquery-sortable-lists.min.js"></script>
<script type="text/javascript">
$(function()
{
	var options = {
			placeholderCss: {'background-color': '#ff8'},
			hintCss: {'background-color':'#bbf'},
			isAllowed: function(cEl, hint, target)
			{
				if(hint.parents('li').first().data('module') === 'c' && cEl.data('module') !== 'c')
				{
					hint.css('background-color', '#ff9999');
					return false;
				}
				else
				{
					hint.css('background-color', '#99ff99');
					return true;
				}
			},
			opener: {
				 active: true,
				 close: 'images/Remove2.png',
				 open: 'images/Add2.png',
				 openerCss: {
					 'display': 'inline-block',
					 'width': '18px',
					 'height': '18px',
					 'float': 'left',
					 'margin-left': '-35px',
					 'margin-right': '5px',
					 'background-position': 'center center',
					 'background-repeat': 'no-repeat'
				 },
				 openerClass: ''
			}
		},

		sWrapper = $('#settingsWrapper');

	$('#sTree2, #sTree').sortableLists(options);

	$('#toArrBtn').on('click', function(){ console.log($('#sTree2').sortableListsToArray()); });
	$('#toHierBtn').on('click', function() { console.log($('#sTree2').sortableListsToHierarchy()); });
	$('#toStrBtn').on('click', function() { console.log($('#sTree2').sortableListsToString()); });
	$('.descPicture').on('click', function(e) { $(this).toggleClass('descPictureClose'); });
});
</script>
</head>
<body>
    <div class="container">
      	<section id="main_content">

	<ul class="sTree2 listsClass" id="sTree2">
				<li id="item_a" data-module="a">
					<div>选项 a</div>
				</li>
				<li class="sortableListsOpen" id="item_b" data-module="b">
					<div>选项 b</div>
					<ul class="">
						<li id="item_b1" data-module="b">
							<div>选项 b1</div>
						</li>
						<li id="item_b2" data-module="b">
							<div>选项 b2</div>
						</li>
						<li id="item_b3" data-module="b">
							<div>选项 b3</div>
						</li>
						<li id="item_b4" data-module="b">
							<div>选项 b4</div>
						</li>
						<li id="item_b5" data-module="b">
							<div>选项 b5</div>
						</li>
					</ul>
				</li>
				<li class="" id="item_c" data-module="c">
					<div>选项 c</div>
					<ul class="">
						<li id="item_c1" data-module="c">
							<div>选项 c1</div>
						</li>
						<li id="item_c2" data-module="c">
							<div>选项 c2</div>
						</li>
						<li id="item_c3" data-module="c">
							<div>选项 c3</div>
						</li>
						<li id="item_c4" data-module="c">
							<div>选项 c4</div>
						</li>
						<li id="item_c5" data-module="c">
							<div>选项 c5</div>
						</li>
					</ul>
				</li>
				<li class="" id="item_d" data-module="d">
					<div>选项 d</div>
					<ul class="">
						<li id="item_d1" data-module="d">
							<div>选项 d1</div>
						</li>
						<li id="item_d2" data-module="d">
							<div>选项 d2</div>
						</li>
						<li id="item_d3" data-module="d">
							<div>选项 d3</div>
						</li>
						<li id="item_d4" data-module="d">
							<div>选项 d4</div>
						</li>
						<li id="item_d5" data-module="d">
							<div>选项 d5</div>
						</li>
					</ul>
				</li>
				<li class="" id="item_e" data-module="e">
					<div>选项 e</div>
				</li>
				<li class="" id="item_f" data-module="f">
					<div>选项 f</div>
				</li>
			</ul>
      </section>
    </div>
</body>
</html>









JS代码(jquery-sortable-lists.min.js):

/* GNU General public license*/
(function(d){
	d.fn.sortableLists=function(e){
	function m(a){
	if(b.isDragged){
	var r=b.cEl,c=b.doc,e=b.win;
	a.pageX||q(a);
	c.scrollTop()>b.rootEl.offset.top-10&&50>a.clientY?b.upScroll?(a.pageY-=f.scroll,d("html,body").each(function(a){
	d(this).scrollTop(d(this).scrollTop()-f.scroll)}
),p(a)):g(a):c.scrollTop()+e.height()<b.rootEl.offset.top+b.rootEl.el.outerHeight(!1)+10&&50>e.height()-a.clientY?b.downScroll?(a.pageY+=f.scroll,d("html,body").each(function(a){
	d(this).scrollTop(d(this).scrollTop()+f.scroll)}
),p(a)):k(a):v(b);
	b.oElOld=b.oEl;
	r.el[0].style.visibility="hidden";
	b.oEl=oEl=A(a.pageX,a.pageY);
	r.el[0].style.visibility="visible";
	B(a,b);
	C(a,b)}
}
function n(a){
	var r=b.cEl,c=d("#sortableListsHint",b.rootEl.el),e=l[0].style,h=null,g=!1,k=d("#sortableListsHintWrapper");
	b.isDragged=!1;
	"block"==e.display&&c.length&&b.isAllowed?(h=c,g=!0):(h=b.placeholderNode,g=!1);
	offset=h.offset();
	r.el.animate({
	left:offset.left-b.cEl.mL,top:offset.top-b.cEl.mT}
,250,function(){
	D(r);
	h.after(r.el[0]);
	h[0].style.display="none";
	e.display="none";
	c.remove();
	k.removeAttr("id").removeClass(f.hintWrapperClass);
	k.length&&k.prev("div").append(w.clone(!0));
	g?b.placeholderNode.slideUp(150,function(){
	b.placeholderNode.remove();
	x()}
):(b.placeholderNode.remove(),x())}
);
	v(b);
	b.doc.unbind("mousemove",m).unbind("mouseup",n);
	f.complete(r.el)}
function g(a){
	b.upScroll||(b.upScroll=setInterval(function(){
	b.doc.trigger("mousemove")}
,50))}
function k(a){
	b.downScroll||(b.downScroll=setInterval(function(){
	b.doc.trigger("mousemove")}
,50))}
function p(a){
	b.pY=a.pageY;
	b.pX=a.pageX;
	b.cY=a.clientY;
	b.cX=a.clientX}
function q(a){
	a.pageY=b.pY;
	a.pageX=b.pX;
	a.clientY=b.cY;
	a.clientX=b.cX}
function v(a){
	clearInterval(a.upScroll);
	clearInterval(a.downScroll);
	a.upScroll=a.downScroll=!1}
function C(a,b){
	var c=b.cEl;
	c.el.css({
	top:a.pageY-c.xyOffsetDiff.Y-c.mT,left:a.pageX-c.xyOffsetDiff.X-c.mL}
)}
function A(a,f){
	if(!document.elementFromPoint)return null;
	var c=b.isRelEFP;
	if(null===c){
	var e,h;
	0<(e=b.doc.scrollTop())&&(c=null==(h=document.elementFromPoint(0,e+d(window).height()-1))||"HTML"==h.tagName.toUpperCase());
	0<(e=b.doc.scrollLeft())&&(c=null==(h=document.elementFromPoint(e+d(window).width()-1,0))||"HTML"==h.tagName.toUpperCase())}
c&&(a-=b.doc.scrollLeft(),f-=b.doc.scrollTop());
	c=d(document.elementFromPoint(a,f));
	if(b.rootEl.el.find(c).length){
	if(c.is("#sortableListsPlaceholder")||c.is("#sortableListsHint"))return null;
	if(!c.is("li"))return c=c.closest("li"),c[0]?c:null;
	if(c.is("li"))return c}
else return null}
function B(a,e){
	var c=e.oEl;
	if(c&&e.oElOld){
	var g=c.outerHeight(!1),h=a.pageY-c.offset().top;
	if(5>h)a:{
	d("#sortableListsHintWrapper",b.rootEl.el).length&&l.unwrap();
	if(a.pageX-c.offset().left<f.insertZone){
	if(c.prev("#sortableListsPlaceholder").length){
	l.css("display","none");
	break a}
c.before(l)}
else{
	g=c.children();
	h=c.children("ul").first();
	if(h.children().first().is("#sortableListsPlaceholder")){
	l.css("display","none");
	break a}
h.length?h.prepend(l):(g.first().after(l),l.wrap(y));
	b.oEl&&t(c)}
l.css("display","block");
	b.isAllowed=f.isAllowed(b.cEl.el,d("#sortableListsHint"),c)}
else if(g-5<h)a:{
	d("#sortableListsHintWrapper",b.rootEl.el).length&&l.unwrap();
	if(a.pageX-c.offset().left<f.insertZone){
	if(c.next("#sortableListsPlaceholder").length){
	l.css("display","none");
	break a}
c.after(l)}
else{
	g=c.children();
	h=c.children(f.listSelector).last();
	if(h.children().last().is("#sortableListsPlaceholder")){
	l.css("display","none");
	break a}
h.length?g.last().append(l):(c.append(l),l.wrap(y));
	b.oEl&&t(c)}
l.css("display","block");
	b.isAllowed=f.isAllowed(b.cEl.el,d("#sortableListsHint"),c)}
}
}
function t(a){
	a.removeClass("sortableListsClosed").addClass("sortableListsOpen");
	a.children("ul,ol").css("display","block");
	a.children("div").children(".sortableListsOpener").first().css("background-image","url("+f.opener.close+")")}
function z(a){
	a.removeClass("sortableListsOpen").addClass("sortableListsClosed");
	a.children("ul,ol").css("display","none");
	a.children("div").children(".sortableListsOpener").first().css("background-image","url("+f.opener.open+")")}
function D(a){
	var b=a.el[0].style;
	a.el.removeClass(f.currElClass+" sortableListsCurrent");
	b.top="0";
	b.left="0";
	b.position="relative";
	b.width="auto"}
function x(){
	d(f.listSelector,b.rootEl.el).each(function(a){
	d(this).children().length||(d(this).prev("div").children(".sortableListsOpener").first().remove(),d(this).remove())}
)}
var u=d("body").css("position","relative"),E={
	currElClass:"",placeholderClass:"",placeholderCss:{
	position:"relative",padding:0}
,hintClass:"",hintCss:{
	display:"none",position:"relative",padding:0}
,hintWrapperClass:"",hintWrapperCss:{
}
,baseClass:"",baseCss:{
	position:"absolute",top:0-parseInt(u.css("margin-top")),left:0-parseInt(u.css("margin-left")),margin:0,padding:0,"z-index":2500}
,opener:{
	active:!1,open:"",close:"",openerCss:{
	"float":"left",display:"inline-block","background-position":"center center","background-repeat":"no-repeat"}
,openerClass:""}
,listSelector:"ul",listsClass:"",listsCss:{
}
,insertZone:50,scroll:20,isAllowed:function(a,b){
	return!0}
,complete:function(a){
	return!0}
}
,f=d.extend(!0,{
}
,E,e),F=d("<"+f.listSelector+" />").prependTo(u).attr("id","sortableListsBase").css(f.baseCss).addClass(f.baseClass),G=d("<li />").attr("id","sortableListsPlaceholder").css(f.placeholderCss).addClass(f.placeholderClass),l=d("<li />").attr("id","sortableListsHint").css(f.hintCss).addClass(f.hintClass),y=d("<"+f.listSelector+" />").attr("id","sortableListsHintWrapper").addClass(f.listsClass+" "+f.hintWrapperClass).css(f.listsCss).css(f.hintWrapperCss),w=d("<span />").addClass("sortableListsOpener "+f.opener.openerClass).css("background-image","url("+f.opener.close+")").css(f.opener.openerCss).on("mousedown",function(a){
	a=d(this).closest("li");
	a.hasClass("sortableListsClosed")?t(a):z(a);
	return!1}
),b={
	isRelEFP:null,oEl:null,rootEl:null,cEl:null,upScroll:!1,downScroll:!1,pX:0,pY:0,cX:0,cY:0,isAllowed:!0,e:{
	pageX:0,pageY:0,clientX:0,clientY:0}
,doc:d(document),win:d(window)}
;
	f.opener.active&&d(this).find("li").each(function(){
	var a=d(this);
	a.children("ul,ol").length&&(w.clone(!0).prependTo(a.children("div").first()),a.hasClass("sortableListsOpen")||(a.addClass("sortableListsClosed"),z(a)))}
);
	d(".sortableListsOpener").on("mousedown",function(a){
}
);
	return this.on("mousedown",function(a){
	a.preventDefault();
	var e=d(a.target).is("li")?d(a.target):d(a.target).closest("li"),c=d(this);
	if(e[0]){
	b.isDragged=!0;
	var g=parseInt(e.css("margin-top")),h=parseInt(e.css("margin-bottom")),k=parseInt(e.css("margin-left")),p=parseInt(e.css("margin-right")),q=e.offset(),t=e.innerHeight();
	b.rootEl={
	el:c,offset:c.offset(),rootElClass:c.attr("class")}
;
	b.cEl={
	el:e,mT:g,mL:k,mB:h,mR:p,offset:q}
;
	b.cEl.xyOffsetDiff={
	X:a.pageX-b.cEl.offset.left,Y:a.pageY-b.cEl.offset.top}
;
	b.cEl.el.addClass("sortableListsCurrent "+f.currElClass);
	e.before(G);
	a=b.placeholderNode=d("#sortableListsPlaceholder");
	e.css({
	width:e.width(),position:"absolute",top:q.top-g,left:q.left-k}
).prependTo(F);
	a.css({
	display:"block",height:t}
);
	l.css("height",t);
	b.doc.on("mousemove",m).on("mouseup",n)}
}
)}
;
	d.fn.sortableListsToArray=function(e,m,n){
	e=e?e:[];
	m=m?m:0;
	n=n?n:1;
	var g=1;
	this.children("li").each(function(){
	var k=d(this),p=[],q;
	if(!(q=k.attr("id")))throw console.log(k),"Previous item in console.log has no id. It is necessary to create the array.";
	p.id=q;
	p.parentId=m;
	p.value=k.data("value");
	p.branchOrder=g;
	e.push(p);
	n++;
	k.children("ul").sortableListsToArray(e,q,n);
	g++}
);
	return e}
;
	d.fn.sortableListsToHierarchy=function(){
	var e=e?e:[],m=1;
	d(this).children("li").each(function(){
	var n,g=[],k=d(this);
	if(!(n=k.attr("id")))throw console.log(k),"Previous item in console.log has no id. It is necessary to create the array.";
	g.id=n;
	g.value=k.data("value");
	g.order=m;
	g.children=k.children("ul").sortableListsToHierarchy();
	e[m++]=g}
);
	return e}
;
	d.fn.sortableListsToString=function(e,m){
	e=e?e:[];
	m=m?m:0;
	d(this).children("li").each(function(){
	var n,g=d(this);
	if(!(n=g.attr("id")))throw console.log(g),"Previous item in console.log has no id. It is necessary to create the array.";
	e.push(n+"="+m);
	d(this).children("ul,ol").sortableListsToString(e,n)}
);
	return e.join("&amp;
	")}
}
)(jQuery);
	

CSS代码(github-dark.css):

/* Copyright 2014 GitHub Inc. Licensed under the Apache License,Version 2.0 (the "License");you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing,software distributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either express or implied. See the License for the specific language governing permissions and limitations under the License.*/
.pl-c /* comment */
{color:#969896;}
.pl-c1 /* constant,markup.raw,meta.diff.header,meta.module-reference,meta.property-name,support,support.constant,support.variable,variable.other.constant */
,.pl-s .pl-v /* string variable */
{color:#0099cd;}
.pl-e /* entity */
,.pl-en /* entity.name */
{color:#9774cb;}
.pl-s .pl-s1 /* string source */
,.pl-smi /* storage.modifier.import,storage.modifier.package,storage.type.java,variable.other,variable.parameter.function */
{color:#ddd;}
.pl-ent /* entity.name.tag */
{color:#7bcc72;}
.pl-k /* keyword,storage,storage.type */
{color:#cc2372;}
.pl-pds /* punctuation.definition.string,string.regexp.character-class */
,.pl-s /* string */
,.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */
,.pl-sr /* string.regexp */
,.pl-sr .pl-cce /* string.regexp constant.character.escape */
,.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */
,.pl-sr .pl-sre /* string.regexp source.ruby.embedded */
{color:#3c66e2;}
.pl-v /* variable */
{color:#fb8764;}
.pl-id /* invalid.deprecated */
{color:#e63525;}
.pl-ii /* invalid.illegal */
{background-color:#e63525;color:#f8f8f8;}
.pl-sr .pl-cce /* string.regexp constant.character.escape */
{color:#7bcc72;font-weight:bold;}
.pl-ml /* markup.list */
{color:#c26b2b;}
.pl-mh /* markup.heading */
,.pl-mh .pl-en /* markup.heading entity.name */
,.pl-ms /* meta.separator */
{color:#264ec5;font-weight:bold;}
.pl-mq /* markup.quote */
{color:#00acac;}
.pl-mi /* markup.italic */
{color:#ddd;font-style:italic;}
.pl-mb /* markup.bold */
{color:#ddd;font-weight:bold;}
.pl-md /* markup.deleted,meta.diff.header.from-file */
{background-color:#ffecec;color:#bd2c00;}
.pl-mi1 /* markup.inserted,meta.diff.header.to-file */
{background-color:#eaffea;color:#55a532;}
.pl-mdr /* meta.diff.range */
{color:#9774cb;font-weight:bold;}
.pl-mo /* meta.output */
{color:#264ec5;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
39.31 KB
jquery特效2
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章