jquery實(shí)現(xiàn)拖動效果
因?yàn)橄雽?shí)現(xiàn)相框的拖到,找了半天的原因愣是沒有找到錯(cuò)誤,所以,只能翻看源碼了
如何實(shí)現(xiàn)拖動效果?
首先分析下拖動效果原理:
1.當(dāng)鼠標(biāo)在被拖動對象上按下鼠標(biāo)(觸發(fā)onmousedown事件,且鼠標(biāo)在對象上方)
2.開始移動鼠標(biāo)(觸發(fā)onmousemove事件)
3.移動時(shí)更顯對象的top和left值
4.鼠標(biāo)放開停止拖動(觸發(fā)onmouseup事件)
注意:拖動的對象必須是定位對象(即設(shè)置了position:absolute或 relative)。
也就是說拖動事件=onmousedown事件+onmousemove事件
整個(gè)過程就是處理這三個(gè)事件來模擬drag事件
現(xiàn)在看看我實(shí)現(xiàn)的源代碼:
html代碼:
<div class="drag"> <p class="title">標(biāo)題(點(diǎn)擊標(biāo)題拖動)</p> </div> <div class="drag1"> <p class="title">標(biāo)題</p> 點(diǎn)擊我移動 </div>
jquery插件代碼:
(function($){ $.fn.drag=function(options){ //默認(rèn)配置 var defaults = { handler:false, opacity:0.5 }; // 覆蓋默認(rèn)配置 var opts = $.extend(defaults, options); this.each(function(){ //初始標(biāo)記變量 var isMove=false, //handler如果沒有設(shè)置任何值,則默認(rèn)為移動對象本身,否則為所設(shè)置的handler值 handler=opts.handler?$(this).find(opts.handler):$(this), _this=$(this), //移動的對象 dx,dy; $(document) //移動鼠標(biāo),改變對象位置 .mousemove(function(event){ // console.log(isMove); if(isMove){ //獲得鼠標(biāo)移動后位置 var eX=event.pageX,eY=event.pageY; //更新對象坐標(biāo) _this.css({'left':eX-dx,'top':eY-dy}); } }) //當(dāng)放開鼠標(biāo),停止拖動 .mouseup(function(){ isMove=false; _this.fadeTo('fast', 1); //console.log(isMove); }); handler //當(dāng)按下鼠標(biāo),設(shè)置標(biāo)記變量isMouseDown為true .mousedown(function(event){ //判斷最后觸發(fā)事件的對象是否是handler if($(event.target).is(handler)){ isMove=true; $(this).css('cursor','move'); //console.log(isMove); _this.fadeTo('fast', opts.opacity); //鼠標(biāo)相對于移動對象的坐標(biāo) dx=event.pageX-parseInt(_this.css("left")); dy=event.pageY-parseInt(_this.css("top")); } }); }); }; })(jQuery);
調(diào)用方法:
$(function(){ //拖動標(biāo)題 $(".drag").drag({ handler:$('.title'),//操作拖動的對象,此對象必須是移動對象的子元素 opacity:0.7 //設(shè)置拖動時(shí)透明度 }); //拖動主體對象 $(".drag1").drag({ opacity:0.7 }); });
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 針對后臺列表table拖拽比較實(shí)用的jquery拖動排序
- jQuery動態(tài)添加可拖動元素完整實(shí)例(附demo源碼下載)
- 使用jQuery的easydrag插件實(shí)現(xiàn)可拖動的DIV彈出框
- jQuery實(shí)現(xiàn)簡單的DIV拖動效果
- jQuery實(shí)現(xiàn)div隨意拖動的實(shí)例代碼(通用代碼)
- jQuery拖動元素并對元素進(jìn)行重新排序
- jQuery實(shí)現(xiàn)移動端滑塊拖動選擇數(shù)字效果
- jQuery實(shí)現(xiàn)分隔條左右拖動功能
- jQuery拖動布局其結(jié)果保存到數(shù)據(jù)庫
- jquery實(shí)現(xiàn)拖動效果(代碼分享)
相關(guān)文章
使用Jquery實(shí)現(xiàn)點(diǎn)擊文字后變成文本框且可修改
使用Jquery實(shí)現(xiàn)點(diǎn)擊文字變?yōu)槲谋究蛐Ч?,可對文本框文字進(jìn)行修改,具體的實(shí)現(xiàn)思路如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-09-09jquery隱藏標(biāo)簽和顯示標(biāo)簽的實(shí)例
在jquery中我們要實(shí)現(xiàn)點(diǎn)擊按鈕隱藏標(biāo)簽和顯示標(biāo)簽,只要綁定指定button或其它,這樣點(diǎn)擊時(shí)調(diào)用hide或show函數(shù)即可解決,下面看個(gè)實(shí)例就明白了2013-11-11jQuery仿Excel表格編輯功能的實(shí)現(xiàn)代碼
Handsontable 是一個(gè)相當(dāng)給力的 jQuery 插件,它實(shí)現(xiàn)了 HTML 頁面中的表格編輯功能,并且是仿 Excel 的編輯效果。2013-05-05jquery實(shí)現(xiàn)九宮格大轉(zhuǎn)盤抽獎
jQuery九宮格大轉(zhuǎn)盤抽獎代碼網(wǎng)頁特效,點(diǎn)擊抽獎按鈕開始隨機(jī)抽獎選擇獎品,可設(shè)置起點(diǎn)位置、獎品數(shù)量、轉(zhuǎn)動次數(shù)、中獎位置參數(shù)2015-11-11以jQuery中$.Deferred對象為例講解promise對象是如何處理異步問題
Promises是一種令代碼異步行為更加優(yōu)雅的抽象,它很有可能是JavaScript的下一個(gè)編程范式,一個(gè)Promise即表示任務(wù)結(jié)果,無論該任務(wù)是否完成。本文以jQuery中$.Deferred對象為例講解promise對象是如何處理異步問題,需要的朋友參考下2015-11-11