jquery 可拖拽的窗體控件實(shí)現(xiàn)代碼
更新時(shí)間:2010年03月21日 12:05:35 作者:
這個(gè)是一個(gè)讓DOM元素可以拖拽的控件,代碼很簡(jiǎn)單,我也是新手,不知道有沒(méi)有BUG,自己測(cè)試還行,希望大家發(fā)現(xiàn)BUG,踴躍提出,謝謝。這個(gè)是基于JQUERY開發(fā)的
所以要引入JQUERY框架。
把我的這個(gè)控件代碼放到一個(gè)js文件里面直接引入就可以了
控件代碼
$.fn.myDrag = function() {
var self = $(this);
self.css("position", "absolute");
var p = self.position();
self.css({ left: p.left, top: p.top });
self.mousedown(
function(event) {
// debugger;
self.data("ifDary", "true"); //保存狀態(tài),表示是否可以拖拽
// debugger;
var selfLeft = event.pageX - parseInt(self.css("left")); //計(jì)算出鼠標(biāo)到這個(gè)元素的left
var selfTop = event.pageY - parseInt(self.css("top")); //計(jì)算出鼠標(biāo)到這個(gè)元素的top
self.data("selfLeft", selfLeft); //保存坐標(biāo)信息
self.data("selfTop", selfTop);
}
);
$(document).mouseup(
function() {
self.data("ifDary", "false");
//防止窗體飛到外面去
var bWidth = $(window).width();
var bHeight = $(window).height();
var currentleft = parseInt(self.css("left"));
var currenttop = parseInt(self.css("top"));
if (currentleft <= 0)
currentleft = 0;
if (currentleft >= bWidth)
currentleft = bWidth - self.width();
if (currenttop <= 0)
currenttop = 0;
if (currenttop >= bHeight)
currenttop = bHeight - self.height();
self.css({ left: currentleft, top: currenttop });
}
);
$(document).mousemove(function(event) {
var state = self.data("ifDary");
if (state && state == "true") {
var selfLeft = event.pageX - parseInt(self.data("selfLeft")); //計(jì)算這個(gè)元素的left位置
var selfTop = event.pageY - parseInt(self.data("selfTop"));
self.css({ left: selfLeft, top: selfTop }); //設(shè)置這個(gè)元素的位置
}
});
return self;
}
javascript代碼
<script src="../script/jquery-1.3.2.js" type="text/javascript"></script> //這個(gè)是JQUERY框架,沒(méi)有的自己搜索去到處都是,一腳踩一堆
<script src="myDrag.js" type="text/javascript"></script> //這個(gè)是我的那個(gè)控件代碼
<script type="text/javascript">
$(function() {
$("#div1").myDrag();
});
</script>
HTML代碼
<div id="div1" style="background-color: Red; height: 100px; width: 100px;">
點(diǎn)擊拖我吧
</div>
把我的這個(gè)控件代碼放到一個(gè)js文件里面直接引入就可以了
控件代碼
復(fù)制代碼 代碼如下:
$.fn.myDrag = function() {
var self = $(this);
self.css("position", "absolute");
var p = self.position();
self.css({ left: p.left, top: p.top });
self.mousedown(
function(event) {
// debugger;
self.data("ifDary", "true"); //保存狀態(tài),表示是否可以拖拽
// debugger;
var selfLeft = event.pageX - parseInt(self.css("left")); //計(jì)算出鼠標(biāo)到這個(gè)元素的left
var selfTop = event.pageY - parseInt(self.css("top")); //計(jì)算出鼠標(biāo)到這個(gè)元素的top
self.data("selfLeft", selfLeft); //保存坐標(biāo)信息
self.data("selfTop", selfTop);
}
);
$(document).mouseup(
function() {
self.data("ifDary", "false");
//防止窗體飛到外面去
var bWidth = $(window).width();
var bHeight = $(window).height();
var currentleft = parseInt(self.css("left"));
var currenttop = parseInt(self.css("top"));
if (currentleft <= 0)
currentleft = 0;
if (currentleft >= bWidth)
currentleft = bWidth - self.width();
if (currenttop <= 0)
currenttop = 0;
if (currenttop >= bHeight)
currenttop = bHeight - self.height();
self.css({ left: currentleft, top: currenttop });
}
);
$(document).mousemove(function(event) {
var state = self.data("ifDary");
if (state && state == "true") {
var selfLeft = event.pageX - parseInt(self.data("selfLeft")); //計(jì)算這個(gè)元素的left位置
var selfTop = event.pageY - parseInt(self.data("selfTop"));
self.css({ left: selfLeft, top: selfTop }); //設(shè)置這個(gè)元素的位置
}
});
return self;
}
javascript代碼
復(fù)制代碼 代碼如下:
<script src="../script/jquery-1.3.2.js" type="text/javascript"></script> //這個(gè)是JQUERY框架,沒(méi)有的自己搜索去到處都是,一腳踩一堆
<script src="myDrag.js" type="text/javascript"></script> //這個(gè)是我的那個(gè)控件代碼
<script type="text/javascript">
$(function() {
$("#div1").myDrag();
});
</script>
HTML代碼
復(fù)制代碼 代碼如下:
<div id="div1" style="background-color: Red; height: 100px; width: 100px;">
點(diǎn)擊拖我吧
</div>
相關(guān)文章
jQuery 順便學(xué)習(xí)下CSS選擇器 奇偶匹配nth-child(even)
今天學(xué)習(xí)jQuery,看到nth-child(even)用法,特意找了下這個(gè)選擇器的用法,在CSS3標(biāo)準(zhǔn)中,用法很強(qiáng)大。2010-05-05jquery select選中的一個(gè)小問(wèn)題
jquery使select選中的注意事項(xiàng)。2009-10-10jQuery對(duì)象和DOM對(duì)象使用說(shuō)明
jQuery對(duì)象和DOM對(duì)象使用說(shuō)明,需要的朋友可以參考下。2010-06-06jQuery無(wú)刷新上傳之uploadify簡(jiǎn)單代碼
項(xiàng)目需要實(shí)現(xiàn)一個(gè)無(wú)刷新批量文件上傳功能,仔細(xì)研究了下,發(fā)現(xiàn)JQuery 提供的Uploadify插件十分不錯(cuò),有興趣的可以了解一下。2017-01-01jquer之a(chǎn)jaxQueue簡(jiǎn)單實(shí)現(xiàn)代碼
手頭不是很忙,突然想到了ajax queue這個(gè)概念,之前貌似有看技術(shù)文章中提到過(guò)這個(gè),就想著用jquery來(lái)實(shí)現(xiàn)一下,思想比較簡(jiǎn)單2011-09-09Spring MVC中Ajax實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Spring MVC中Ajax實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07