




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一步是搭建數(shù)據(jù)庫,先在前臺(tái)界面把內(nèi)容展示出來搭建一個(gè)名為drag的數(shù)據(jù)庫,在數(shù)據(jù)庫中件名為items的表,字段如下。新建drag服務(wù),并在前臺(tái)界面調(diào)用。在界面添加baasData數(shù)據(jù)庫,綁定drag服務(wù)。并用list數(shù)據(jù)組件對(duì)數(shù)據(jù)進(jìn)行展示圖為對(duì)數(shù)據(jù)進(jìn)行初次展示的效果。下面主要講解實(shí)現(xiàn)效果的代碼:js實(shí)現(xiàn)的大概思路還是主要包括三部分:開始——移動(dòng)——結(jié)束手指觸屏對(duì)應(yīng)touchstart手指移動(dòng)對(duì)應(yīng)touchmove首先當(dāng)然是在start中記錄狀態(tài)值,Mtotype.start=function(event){//記錄變量狀態(tài)this.iMouseDown=true;};接下來就是移動(dòng)的動(dòng)作:1、先獲取當(dāng)前鼠標(biāo)點(diǎn)擊的元素2、判斷當(dāng)前是否為可拖動(dòng)狀態(tài)3、將當(dāng)前元素賦值給之前定義的全局參數(shù)this.curTarget4、獲取元素的坐標(biāo)點(diǎn),以及按下的坐標(biāo)點(diǎn)對(duì)于元素左上角的偏移量5、清空之前在modelload中定義的輔助層dragHelper,將當(dāng)前元素this.curTarget放進(jìn)去,設(shè)置dragHelper為可見狀態(tài),當(dāng)前元素this.curTarget不可見,6、記錄起始坐標(biāo)點(diǎn)并且,如果處于移動(dòng)狀態(tài),則設(shè)置輔助層dragHelper的top和left值,使其實(shí)時(shí)移動(dòng)(使用css的position達(dá)到移動(dòng)效果)7、遍歷各個(gè)元素,看當(dāng)前在移動(dòng)的元素是否與其中某個(gè)除自己之外的元素重合,8、如果重合,則將被重合的元素賦值給全局變量this.dropTarget,并給this.dropTarget添加被選中的樣式最后是鼠標(biāo)松開的動(dòng)作:1、判斷是否有被選中的元素和要被替換的元素2、獲取兩個(gè)元素所在的行數(shù)據(jù),并分別設(shè)置兩個(gè)行數(shù)據(jù)的值,即對(duì)兩個(gè)值進(jìn)行替換3、判斷兩個(gè)行數(shù)據(jù)是否被改變過,如果有則保存數(shù)據(jù),并對(duì)一些全局參數(shù)進(jìn)行還原,以備下一次的拖動(dòng)替換不知道怎么上傳壓縮包,所以就用笨方法上傳代碼了。下面附上完整的代碼1define(function(require){2var$=require("jquery");3varjustep=require("$UI/system/lib/justep");45varModel=function(){6this.callParent();78this.curTarget=null;9this.curPos=null;10this.dropTarget=null;11this.iMouseDown=null;12this.lMouseState=null;13this.dragreplaceCont=[];14this.mouseOffset=null;15this.callbackFunc=null;16};1718Mtotype.modelLoad=function(event){19//輔助層用來顯示拖拽20dragHelper=document.createElement('DIV');21dragHelper.setAttribute("class",'dragHelperczYfqmm')22dragHelper.style.cssText='position:absolute;display:none;';23document.body.appendChild(dragHelper);2425vardragitems=document.getElementById('displayRoom').getElementsByTagName("a");//獲取可拖動(dòng)的所有元素26for(vari=0;i<DRAGITEMS.LENGTH;I++){p遍歷可拖動(dòng)的元素<>27this.dragreplaceCont.push(dragitems[i]);28dragitems[i].setAttribute('candrag','1');29}30};3132Mtotype.start=function(event){33//記錄變量狀態(tài)34this.iMouseDown=true;35};3637Mtotype.move=function(event){38ev=event||window.event;39vartarget=ev.target||ev.srcElement;40varmousePos=this.mouseCoords(ev);41//如果當(dāng)前元素可拖拽42vardragObj=target.getAttribute('candrag');43if(dragObj!=null){44if(this.iMouseDown&&!this.lMouseState){45//剛開始拖拽46this.curTarget=target;47this.curPos=this.getPosition(target);48this.mouseOffset=this.getMouseOffset(target,ev);49//清空輔助層50for(vari=0;i<dragHelper.childNodes.length;i++)dragHelper.removeChild(dragHelper.childNodes[i]);51//克隆元素到輔助層,并移動(dòng)到鼠標(biāo)位置52dragHelper.appendChild(this.curTarget.cloneNode(true));53dragHelper.style.display='block';54dragHelper.firstChild.removeAttribute('data-bind');55dragHelper.firstChild.removeAttribute('candrag');56dragHelper.firstChild.setAttribute("class","czYfqmm");57//記錄拖拽元素的位置信息58this.curTarget.setAttribute('startWidth',parseInt(this.curTarget.offsetWidth));59this.curTarget.setAttribute('startHeight',parseInt(this.curTarget.offsetHeight));60this.curTarget.style.background='none';61//記錄每個(gè)可接納元素的位置信息,這里一次記錄以后多次調(diào)用,獲取更高性能62for(vari=0;i<this.dragreplaceCont.length;i++){63with(this.dragreplaceCont[i]){64if(this.dragreplaceCont[i]==this.curTarget)65continue;66varpos=this.getPosition(this.dragreplaceCont[i]);67setAttribute('startWidth',parseInt(offsetWidth));68setAttribute('startHeight',parseInt(offsetHeight));69setAttribute('startLeft',pos.x);70setAttribute('startTop',pos.y);71}75//正在拖拽76if(this.curTarget!=null){77//moveourhelperdivtowhereverthemouseis(adjustedbymouseOffset)78dragHelper.style.top=mousePos.y-this.mouseOffset.y+"px";79dragHelper.style.left=mousePos.x-this.mouseOffset.x+"px";80//拖拽元素的中點(diǎn)81varxPos=mousePos.x;82varyPos=mousePos.y;83varhavedrop=false;84for(vari=0;i<this.dragreplaceCont.length;i++){85with(this.dragreplaceCont[i]){86if(this.dragreplaceCont[i]==this.curTarget)87continue;88if((parseInt(getAttribute('startLeft'))<xPos)&&(parseInt(getAttribute('startTop'))<yPos)&&((parseInt(getAttribute('startLeft'))+parseInt(getAttribute('startWidth')))>xPos)&&((parseInt(getAttribute('startTop'))+parseInt(getAttribute('startHeight')))>yPos)){8990this.dropTarget=this.dragreplaceCont[i];93havedrop=true;94this.dropTarget.className='czYfqmmusrcatch';97break;98}101if(!havedrop&&this.dropTarget!=null){102this.dropTarget.className='czYfqmmusr';103this.dropTarget=null;104}105}//正在拖拽end106this.lMouseState=this.iMouseDown;107if(this.curTarget)returnfalse;//阻止其它響應(yīng)(如:鼠標(biāo)框選文本)108};109110Mtotype.end=function(event){111if(this.curTarget){112dragHelper.style.display='none';//隱藏輔助層113if(this.dropTarget!=null){114//有元素接納,兩者互換115vardatass=p("itemsData");116varrows=datass.find(['name'],[this.curTarget.innerHTML])[0];117varrows1=datass.find(['name'],[this.dropTarget.innerHTML])[0];118varrowsname=this.curTarget.innerHTML;119varrows1name=this.dropTarget.innerHTML;120rows.val("name",rows1name);121rows1.val("name",rowsname);122this.dropTarget.className='czYfqmmusr';123this.dropTarget=null;124if(this.callbackFunc!=null){125this.callbackFunc(this.curTarget);126}127//如果兩者已替換,則保存數(shù)據(jù)庫128if(.changed&&.changed){129datass.saveData({130"onSuccess":function(event){131console.log("替換成功");132}133})136this.curTarget.style.background='green';137this.curTarget.style.visibility='visible';138this.curTarget.setAttribute('candrag','1');139}140this.curTarget=null;141this.iMouseDown=false;142this.lMouseState=false;143};144145Mtotype.mouseCoords=function(ev){//返回鼠標(biāo)相對(duì)頁面左上角的坐標(biāo)146if(ev.pageX||ev.pageY){147return{x:ev.pageX,y:ev.pageY};148}149return{150x:ev.originalEvent.touches[0].pageX,151y:ev.originalEvent.touches[0].pageY152};153}154Mtotype.getPosition=function(e){/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購合同框架協(xié)議書
- 業(yè)務(wù)委托外包服務(wù)協(xié)議合同書
- 企業(yè)員工健康體檢服務(wù)協(xié)議
- 企業(yè)環(huán)保技術(shù)應(yīng)用推廣合作協(xié)議
- 續(xù)簽合同意向協(xié)議書
- 綜合辦公效率提升統(tǒng)計(jì)表
- 小學(xué)生愛國情懷教育故事解讀
- 健康咨詢與服務(wù)推廣協(xié)議
- 甲醛檢測(cè)儀知識(shí)培訓(xùn)課件
- 電子商務(wù)網(wǎng)絡(luò)安全管理與應(yīng)用試題及答案
- DB33T 2157-2018 公共機(jī)構(gòu)綠色數(shù)據(jù)中心建設(shè)與運(yùn)行規(guī)范
- 陜西、甘肅、青海、寧夏四省普通高中2024-2025學(xué)年學(xué)業(yè)水平選擇性考試適應(yīng)性演練(含答案)
- 2024版體育賽事票務(wù)代理合同:賽事組織者與票務(wù)代理公司之間的合作協(xié)議3篇
- 醫(yī)院陪護(hù)管理制度
- 中國計(jì)量大學(xué)《微機(jī)原理及其應(yīng)用》2021-2022學(xué)年第一學(xué)期期末試卷
- 《車控操作系統(tǒng)功能軟件架構(gòu)及接口要求》
- 急性心力衰竭的緊急處理與護(hù)理
- 中國技能大賽-第45屆世界技能大賽全國選拔賽“水處理技術(shù)”項(xiàng)目技術(shù)工作文件
- 無菌物品的儲(chǔ)存與管理
- 固定資產(chǎn)折舊合同
- 寒區(qū)作戰(zhàn)傷員的護(hù)理
評(píng)論
0/150
提交評(píng)論