jQuery 可以拖動(dòng)的div實(shí)現(xiàn)代碼 腳本之家修正版
更新時(shí)間:2009年06月26日 12:49:10 作者:
最近研究了一下jQuery,覺得真的是一個(gè)很不錯(cuò)的js庫(kù),其他的不說,關(guān)鍵是有翔實(shí)的文檔,這點(diǎn)是非常關(guān)鍵的。
當(dāng)然,代碼使用起來也非常的方便,很多東西就不用自己再去琢磨了。
研究的過程中順便用jQuery實(shí)現(xiàn)了一個(gè)div的拖動(dòng),代碼附于本文結(jié)尾。
實(shí)現(xiàn)的思路請(qǐng)參考我的可以拖動(dòng)的DIV(二)一文。
在參考jQuery中文網(wǎng)站中的例子時(shí),我發(fā)現(xiàn)他們?cè)赿iv窗口標(biāo)題欄觸發(fā)click事件時(shí),將div的位置移上了一些,而mouseup的事件注冊(cè)在整個(gè)div窗口上,這個(gè)思路讓我很受啟發(fā),解決了鼠標(biāo)移動(dòng)很快而div不能跟上導(dǎo)致的錯(cuò)誤,非常好的解決辦法。
另外,請(qǐng)注意事件起泡,在jQuery以及任何實(shí)現(xiàn)div拖動(dòng)的js代碼中,事件起泡無疑都是要阻止的。
在jQuery 的bind或者unbind方法中,函數(shù)的返回值最好都用false,不信的話,可以試試true。
這個(gè)事件起泡的過程在一般代碼中我們用stopPropagation方法來阻止。
效果圖:

注意文中加載了jquery-1.2.6.js
<script language="javascript" type="text/javascript" src="jquery-1.2.6.js"></script>
<style type="text/css">
<!–
body {
background-color: #333333;
}
.win{
position:absolute;
top:0px;
left:0px;
width:300px;
height:222px;
}
.title{
height:20px;
width:300px;
position:absolute;
background-color:#666666;
float:inherit;
top:0px;
left:0px;
background-image:url(bgo.gif);
}
.winCon{
height:200px;
width:298px;
position:absolute;
border:solid;
border-width:1px;
border-color:#666666;
border-top:none;
float:inherit;
left:0px;
top:20px;
}
–>
</style>
<a href="#" onclick="addDiv(this,'asd');">asgfsdg</a>
<a href="#" id="zxca" onclick="addDiv(this,'zxc');">asgfsdg</a>
<script language="javascript" type="text/javascript">
function addDiv(element,str){
$(document.body).append("<div class='win' id='win"+str+"‘><div class='title' id='"+str+"‘></div><div class='winCon'>asfsdgfsdgsd</div></div>");
$("#"+str).mousedown(function(event){
var offset = $(this).offset();
_x=event.clientX-offset.left;
_y=event.clientY+20-offset.top;
$("#win"+str).css({"top":offset.top-20+"px"});
$("#win"+str).mousemove(function(event){
_xx=event.clientX-_x;
_yy=event.clientY-_y;
this.style.left=_xx+"px";
this.style.top=_yy+"px";
this.style.zIndex="100″;
return false;
});
return false;
});
$("#win"+str).mouseup(function(){
$(this).unbind("mousemove");
$(this).css({"z-index":"-1″});
return false;
});
element.removeEventListener("click",true);
}
</script>
研究的過程中順便用jQuery實(shí)現(xiàn)了一個(gè)div的拖動(dòng),代碼附于本文結(jié)尾。
實(shí)現(xiàn)的思路請(qǐng)參考我的可以拖動(dòng)的DIV(二)一文。
在參考jQuery中文網(wǎng)站中的例子時(shí),我發(fā)現(xiàn)他們?cè)赿iv窗口標(biāo)題欄觸發(fā)click事件時(shí),將div的位置移上了一些,而mouseup的事件注冊(cè)在整個(gè)div窗口上,這個(gè)思路讓我很受啟發(fā),解決了鼠標(biāo)移動(dòng)很快而div不能跟上導(dǎo)致的錯(cuò)誤,非常好的解決辦法。
另外,請(qǐng)注意事件起泡,在jQuery以及任何實(shí)現(xiàn)div拖動(dòng)的js代碼中,事件起泡無疑都是要阻止的。
在jQuery 的bind或者unbind方法中,函數(shù)的返回值最好都用false,不信的話,可以試試true。
這個(gè)事件起泡的過程在一般代碼中我們用stopPropagation方法來阻止。
效果圖:

注意文中加載了jquery-1.2.6.js
復(fù)制代碼 代碼如下:
<script language="javascript" type="text/javascript" src="jquery-1.2.6.js"></script>
<style type="text/css">
<!–
body {
background-color: #333333;
}
.win{
position:absolute;
top:0px;
left:0px;
width:300px;
height:222px;
}
.title{
height:20px;
width:300px;
position:absolute;
background-color:#666666;
float:inherit;
top:0px;
left:0px;
background-image:url(bgo.gif);
}
.winCon{
height:200px;
width:298px;
position:absolute;
border:solid;
border-width:1px;
border-color:#666666;
border-top:none;
float:inherit;
left:0px;
top:20px;
}
–>
</style>
<a href="#" onclick="addDiv(this,'asd');">asgfsdg</a>
<a href="#" id="zxca" onclick="addDiv(this,'zxc');">asgfsdg</a>
<script language="javascript" type="text/javascript">
function addDiv(element,str){
$(document.body).append("<div class='win' id='win"+str+"‘><div class='title' id='"+str+"‘></div><div class='winCon'>asfsdgfsdgsd</div></div>");
$("#"+str).mousedown(function(event){
var offset = $(this).offset();
_x=event.clientX-offset.left;
_y=event.clientY+20-offset.top;
$("#win"+str).css({"top":offset.top-20+"px"});
$("#win"+str).mousemove(function(event){
_xx=event.clientX-_x;
_yy=event.clientY-_y;
this.style.left=_xx+"px";
this.style.top=_yy+"px";
this.style.zIndex="100″;
return false;
});
return false;
});
$("#win"+str).mouseup(function(){
$(this).unbind("mousemove");
$(this).css({"z-index":"-1″});
return false;
});
element.removeEventListener("click",true);
}
</script>
您可能感興趣的文章:
- jquery div拖動(dòng)效果示例代碼
- jQuery拖動(dòng)div、移動(dòng)div、彈出層實(shí)現(xiàn)原理及示例
- 利用JQuery+EasyDrag 實(shí)現(xiàn)彈出可拖動(dòng)的Div,同時(shí)向Div傳值,然后返回Div選中的值
- jQuery實(shí)現(xiàn)單擊彈出Div層窗口效果(可關(guān)閉可拖動(dòng))
- jQuery實(shí)現(xiàn)DIV層淡入淡出拖動(dòng)特效的方法
- jquery拖動(dòng)改變div大小
- jQuery實(shí)現(xiàn)的鼠標(biāo)拖動(dòng)浮層功能示例【拖動(dòng)div等任何標(biāo)簽】
- jquery實(shí)現(xiàn)可拖動(dòng)DIV自定義保存到數(shù)據(jù)的實(shí)例
- jQuery實(shí)現(xiàn)Div拖動(dòng)+鍵盤控制綜合效果的方法
- jQuery動(dòng)態(tài)添加可拖動(dòng)元素完整實(shí)例(附demo源碼下載)
- jQuery拖動(dòng)元素并對(duì)元素進(jìn)行重新排序
- jquery實(shí)現(xiàn)兩個(gè)div中的元素相互拖動(dòng)的方法分析
相關(guān)文章
清空元素html("") innerHTML="" 與 empty()的區(qū)別和應(yīng)用(推薦)
這篇文章主要介紹了清空元素html("")、innerHTML="" 與 empty()的區(qū)別和應(yīng)用,詳細(xì)介紹了三者之間的原理及應(yīng)用,需要的朋友可以參考下2017-08-08
jQuery事件之鍵盤事件(ctrl+Enter回車鍵提交表單等)
鍵盤事件處理所有用戶在鍵盤敲擊的情況,不管在文本輸入?yún)^(qū)域內(nèi)部還是外部,這里介紹下jquery鍵盤事件的相關(guān)知識(shí),需要的朋友可以參考下2014-05-05
jquery中頁(yè)面Ajax方法$.load的功能使用介紹
load可以做到加載一個(gè)頁(yè)面的時(shí)候,如果發(fā)生錯(cuò)誤,根據(jù)statusText給出的狀態(tài),顯示對(duì)應(yīng)的提示,這對(duì)用戶來說非常重要2014-10-10
jQuery實(shí)現(xiàn)字體顏色漸變效果的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)字體顏色漸變效果的方法,結(jié)合實(shí)例形式分析了jQuery動(dòng)態(tài)設(shè)置元素屬性實(shí)現(xiàn)字體顏色漸變效果的相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
jquery限定文本框只能輸入數(shù)字(整數(shù)和小數(shù))
這篇文章主要介紹了jquery限定文本框只能輸入數(shù)字,包括整數(shù)和小數(shù),感興趣的小伙伴們可以參考一下2016-01-01
JavaScript 學(xué)習(xí)筆記之一jQuery寫法圖片等比縮放以及預(yù)加載
以前對(duì)于JavaScript總是在用到的時(shí)候在頁(yè)面上寫幾個(gè)函數(shù),基本沒考慮到函數(shù)的封裝與重用,最近有個(gè)項(xiàng)目可能對(duì)于這方面要求有點(diǎn)高,所以就研究了下類似jQuery的封裝2012-06-06

