jquery 可拖拽的窗體控件實(shí)現(xiàn)代碼
更新時(shí)間:2010年03月21日 12:05:35 作者:
這個(gè)是一個(gè)讓DOM元素可以拖拽的控件,代碼很簡(jiǎn)單,我也是新手,不知道有沒有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框架,沒有的自己搜索去到處都是,一腳踩一堆
<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框架,沒有的自己搜索去到處都是,一腳踩一堆
<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實(shí)現(xiàn)圖片遮罩半透明墜落遮擋
這篇文章主要介紹了使用jQuery實(shí)現(xiàn)圖片遮罩半透明墜落遮擋,效果非常棒,小伙伴們做相冊(cè)的時(shí)候可以直接拿走使用。2015-03-03
解決jquery1.9不支持browser對(duì)象的問題
項(xiàng)目里面一直用的都是jquery1.9,不支持browser對(duì)象,百度一下,找到了解決方案在此與大家分享下,有遇到此問題的朋友不要錯(cuò)過2013-11-11
jQuery防止click雙擊多次提交及傳遞動(dòng)態(tài)函數(shù)或多參數(shù)
這篇文章主要介紹了jQuery防止click雙擊多次提交及傳遞動(dòng)態(tài)函數(shù)方法,需要的朋友可以參考下2014-04-04
jQuery實(shí)現(xiàn)jQuery-form.js實(shí)現(xiàn)異步上傳文件
jquery.form.js是一個(gè)非常強(qiáng)大的用于表單提交的插件。這篇文章主要介紹了jQuery實(shí)現(xiàn)jQuery-form.js實(shí)現(xiàn)異步上傳文件,有興趣的可以了解一下。2017-04-04
Jquery實(shí)現(xiàn)上下移動(dòng)和排序代碼
這篇文章主要介紹了Jquery實(shí)現(xiàn)上下移動(dòng)和排序,想要學(xué)習(xí)Jquery的同學(xué)可以來了解一下。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
jQuery實(shí)現(xiàn)類似滑動(dòng)門切換效果的層切換
滑動(dòng)門切換效果想必大家都有見到過吧,在本文為大家介紹下jQuery是如何實(shí)現(xiàn)層切換的2013-09-09
通過XMLHttpRequest和jQuery實(shí)現(xiàn)ajax的幾種方式
AJAX大家已經(jīng)都知道了,是為了實(shí)現(xiàn)異步通訊,提高用戶體驗(yàn)度,而將很多舊知識(shí)(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一個(gè)新的知識(shí)框架。而,XMLHttpRequest對(duì)象則是其中的重重之中,本篇文章主要給大家介紹通過XMLHttpRequest和jQuery實(shí)現(xiàn)ajax的幾種方式2015-08-08
jquery中封裝函數(shù)傳遞當(dāng)前元素的方法示例
這篇文章主要給大家介紹了關(guān)于jquery中封裝函數(shù)傳遞當(dāng)前元素的方法,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05
jquery實(shí)現(xiàn)的導(dǎo)航固定效果
這篇文章主要介紹了jquery實(shí)現(xiàn)的導(dǎo)航固定效果,需要的朋友可以參考下2014-04-04

