jquery网页元素拖拽插件效果及实现


Posted in Javascript onAugust 05, 2013

jquery网页元素拖拽插件效果及实现

;(function($){
$.fn.extend({
"jlzindex" : function(){ //用于判断和设置各个对话框的z-index
var $dragindex = $(this);
var arrzindex = new array();
for(var i=0; i < $dragindex.length; i++){ //初始化数组元素值,并按拖拽项顺序设置z-index值
var zidxnum = 10000 - i - i -2;
arrzindex[i] = {"getid":"drag" + ($dragindex.length - i),"zidx":zidxnum};
$("#drag" + ($dragindex.length - i)).css("z-index",zidxnum);
}
$dragindex.mousedown(function(){
var i = 0;
var dindex = 0;
while(arrzindex[i]){ //找到当前点击项在数组里的下标
if(arrzindex[i].getid == $(this).attr("id")){ dindex = i;}
i++;
}
for(var i = dindex; i >=0; i--){ //把点击项移至数组第一位,其他项后移
if(i > 0){
arrzindex[i].getid = arrzindex[i-1].getid;
$("#" + arrzindex[i].getid).css("z-index",arrzindex[i].zidx);
} else{
arrzindex[i].getid = $(this).attr("id");
$("#" + arrzindex[i].getid).css("z-index",arrzindex[i].zidx);
}
}
});
},
"jldraggable" : function(mod){ //拖拽插件
var model = mod;
var draggable = false; 
var $drag = $(this);
$drag.find(".dragbar").mousedown(function(e){
draggable = true;
var mouseleft = e.pagex - $drag.find(".dragbar").offset().left; //鼠标在拖拽区域中的横向距离
var mousetop = e.pagey - $drag.find(".dragbar").offset().top; //鼠标在拖拽区域中的横向距离
if(model == "cfade"){ //原位置元素半透明
$drag.clone(false).appendto("body").addclass("dragshadow").fadeto(0,0.2).css("z-index",parseint($drag.css("z-index")) - 1);
} else if(model == "dfade"){ //跟随鼠标元素半透明
$drag.clone(false).appendto("body").addclass("dragshadow").css("z-index",parseint($drag.css("z-index")) - 1);
$drag.fadeto(0,0.2);
}
$(document).mousemove(function(e){
if(draggable){
var winwidth = $(window).width();
var winheight = $(window).height();
var dragleft = e.pagex - mouseleft;
var dragtop = e.pagey - mousetop;
//拖拽框不能超出窗口边界
if(dragleft < 0){dragleft = 0;}
if(dragleft + $drag.width() > winwidth){
dragleft = winwidth - $drag.width();
}
if(dragtop < 0){dragtop = 0;}
if(dragtop + $drag.height() > winheight){
dragtop = winheight - $drag.height();
}
$drag.css("left",dragleft + "px");
$drag.css("top",dragtop + "px");
} else{
return false;
}
});
});
$(document).mouseup(function(){
draggable = false;
$(".dragshadow").remove();
if(model == "dfade"){
$drag.fadeto(0,1); 
}
});
}
})
})(jquery)

index.html:
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.jldraggable.js"></script> 
<script type="text/javascript">
$(document).ready(function(){
$("#drag1").jldraggable(); //无参数,没有影子
$("#drag2").jldraggable("cfade"); //cfade,定义原位置半透明阴影
$("#drag3").jldraggable("dfade"); //dfade,定义跟随鼠标的半透明阴影
$(".dragindex").jlzindex(); //多个窗口的z-index处理
});
</script>
<style type="text/css">
.dragtitle{
width:120px;
height:27px;
background:url(images/drag_01.jpg);
cursor:move;
}
.dragcontent{
width:120px;
height:73px;
background:url(images/drag_02.jpg);
line-height:73px;
text-align:center;
}
#drag1{
width:120px; 
position:absolute; 
left:10px; 
top:10px;
}
#drag2{
width:120px; 
position:absolute; 
left:90px; 
top:90px;
}
#drag3{
width:120px; 
position:absolute; 
left:170px; 
top:170px;
}
</style>
<div id="drag1" class="dragindex">
<div class="dragbar dragtitle"></div>
<div class="dragcontent">无参数</div>
</div>
<div id="drag2" class="dragindex">
<div class="dragbar dragtitle"></div>
<div class="dragcontent">原位半透明</div>
</div>
<div id="drag3" class="dragindex">
<div class="dragbar dragtitle"></div>
<div class="dragcontent">拖拽半透明</div>
</div>
Javascript 相关文章推荐
JavaScript中split() 使用方法汇总
Apr 17 Javascript
JavaScript动态创建div等元素实例讲解
Jan 06 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
JavaScript快速调试的两个技巧
Nov 04 Javascript
JS实现鼠标移动拖尾
Dec 27 Javascript
jquery mobile实现拨打电话功能的几种方法
Aug 05 #Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 #Javascript
javascript显示用户停留时间的简单实例
Aug 05 #Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 #Javascript
JS字符串处理实例代码
Aug 05 #Javascript
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 #Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 #Javascript
You might like
Discuz 模板引擎的封装类代码
2008/07/18 PHP
php笔记之常用文件操作
2010/10/12 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
详解vee-validate的使用个人小结
2017/06/07 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python学习数据结构实例代码
2015/05/11 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
会计专业自荐信范文
2013/12/02 职场文书
家长通知书教师评语
2014/04/17 职场文书
中学生运动会口号
2014/06/07 职场文书
捐助感谢信
2015/01/22 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP