真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用jQuery實現(xiàn)簡單的拖曳效果-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關如何利用jQuery實現(xiàn)簡單的拖曳效果的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)是專業(yè)的萊西網(wǎng)站建設公司,萊西接單;提供網(wǎng)站設計、成都網(wǎng)站制作,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行萊西網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

提出問題

如何實現(xiàn)將一個盒子里的元素拉到另外一個盒子里?

實現(xiàn)思路

  • 此操作包含的事件有 mousedown mousemove mouseup ,對這三個事件進行監(jiān)聽并進行相應的操作。

  • 操作設計的節(jié)點有:原節(jié)點,臨時節(jié)點,新節(jié)點

  • 節(jié)點的移動涉及事件e的坐標

  • 操作元素使用JQUERY

代碼實現(xiàn)

相應的注釋在文中已有體現(xiàn),請認真觀看,你可以理解的。

  • 先定義一個對象 drag,包含拖曳需要用到的參數(shù)

  • 定義初始化 init 函數(shù),監(jiān)聽各種鼠標事件

  • mousedown 事件:克隆一個臨時節(jié)點。記錄鼠標點擊位置與節(jié)點的位置的X,Y差值,設置克隆副本的樣式并在原容器中添加這個副本

  • mousemove 事件:判斷鼠標的相對位移,設置副本絕對位置的XY,并對鼠標移出瀏覽器的情況進行處理;對三個UL進行遍歷,在不是原容器的情況下,判斷鼠標位置是否處于其他容器的范圍內(nèi),如果是,修改鼠標當前容器的樣式。

  • mouseup 時間:移除臨時節(jié)點。對三個UL進行遍歷,在不是原容器的情況下,判斷鼠標位置是否處于其他容器的范圍內(nèi),如果是,在該容器下加入新節(jié)點,原容器刪除原節(jié)點。




 
 拖拽
 




 

 
     
  • A
  •  
  • B
  •  
  • C
  •  
  • e
  •  
  • f
  •  
  • g
  •  
 
     
       $(function(){  //出入允許拖拽節(jié)點的父容器,一般是ul外層的容器  drag.init('container');  }); //拖拽 var drag = {  class_name : null, //允許放置的容器  permitDrag : false, //是否允許移動標識  _x : 0,    //節(jié)點x坐標  _y : 0,     //節(jié)點y坐標  _left : 0,   //光標與節(jié)點坐標的距離  _top : 0,   //光標與節(jié)點坐標的距離  old_elm : null,  //拖拽原節(jié)點  tmp_elm : null,  //跟隨光標移動的臨時節(jié)點  new_elm : null,  //拖拽完成后添加的新節(jié)點  //初始化  init : function (className){   //允許拖拽節(jié)點的父容器的classname(可按照需要,修改為id或其他)   drag.class_name = className;   //監(jiān)聽鼠標按下事件,動態(tài)綁定要拖拽的節(jié)點(因為節(jié)點可能是動態(tài)添加的)   $('.' + drag.class_name).on('mousedown', 'ul li', function(event){    //當在允許拖拽的節(jié)點上監(jiān)聽到點擊事件,將標識設置為可以拖拽    drag.permitDrag = true;    //獲取到拖拽的原節(jié)點對象    drag.old_elm = $(this);    //執(zhí)行開始拖拽的操作    drag.mousedown(event);    return false;   });   //監(jiān)聽鼠標移動   $(document).mousemove(function(event){    //判斷拖拽標識是否為允許,否則不進行操作    if(!drag.permitDrag) return false;    //執(zhí)行移動的操作    drag.mousemove(event);    return false;   });   //監(jiān)聽鼠標放開   $(document).mouseup(function(event){   //判斷拖拽標識是否為允許,否則不進行操作   if(!drag.permitDrag) return false;   //拖拽結(jié)束后恢復標識到初始狀態(tài)   drag.permitDrag = false;   //執(zhí)行拖拽結(jié)束后的操作   drag.mouseup(event);   return false;   });  },  //按下鼠標 執(zhí)行的操作  mousedown : function (event){  //1.克隆臨時節(jié)點,跟隨鼠標進行移動  drag.tmp_elm = $(drag.old_elm).clone();  //2.計算 節(jié)點 和 光標 的坐標  drag._x = $(drag.old_elm).offset().left;  drag._y = $(drag.old_elm).offset().top;  var e = event || window.event;  drag._left = e.pageX - drag._x;  drag._top = e.pageY - drag._y;  //3.修改克隆節(jié)點的坐標,實現(xiàn)跟隨鼠標進行移動的效果  $(drag.tmp_elm).css({   'position' : 'absolute',   'background-color' : '#FF8C69',   'left' : drag._x,   'top' : drag._y,  });  //4.添加臨時節(jié)點  tmp = $(drag.old_elm).parent().append(drag.tmp_elm);  drag.tmp_elm = $(tmp).find(drag.tmp_elm);  $(drag.tmp_elm).css('cursor', 'move');  },  //移動鼠標 執(zhí)行的操作  mousemove : function (event){  //2.計算坐標  var e = event || window.event;  var x = e.pageX - drag._left;  var y = e.pageY - drag._top;  var maxL = $(document).width() - $(drag.old_elm).outerWidth();  var maxT = $(document).height() - $(drag.old_elm).outerHeight();  //不允許超出瀏覽器范圍  x = x < 0 ? 0: x;  x = x > maxL ? maxL: x;  y = y < 0 ? 0: y;  y = y > maxT ? maxT: y;  //3.修改克隆節(jié)點的坐標  $(drag.tmp_elm).css({   'left' : x,   'top' : y,  });  //判斷當前容器是否允許放置節(jié)點  $.each($('.' + drag.class_name + ' ul'), function(index, value){   //獲取容器的坐標范圍 (區(qū)域)   var box_x = $(value).offset().left;  //容器左上角x坐標   var box_y = $(value).offset().top;  //容器左上角y坐標   var box_width = $(value).outerWidth(); //容器寬   var box_height = $(value).outerHeight();//容器高   //給可以放置的容器加背景色   if(e.pageX > box_x && e.pageX < box_x+box_width && e.pageY > box_y && e.pageY < box_y+box_height){    //判斷是否不在原來的容器下(使用坐標進行判斷:x、y任意一個坐標不等于原坐標,則表示不是原來的容器)    if($(value).offset().left !== drag.old_elm.parent().offset().left      || $(value).offset().top !== drag.old_elm.parent().offset().top){     $(value).css('background-color', '#FFEFD5');    }   }else{    //恢復容器原背景色    $(value).css('background-color', '#FFFFF0');   }   });  },  //放開鼠標 執(zhí)行的操作  mouseup : function (event){  //移除臨時節(jié)點  $(drag.tmp_elm).remove();  //判斷所在區(qū)域是否允許放置節(jié)點  var e = event || window.event;  $.each($('.' + drag.class_name + ' ul'), function(index, value){   //獲取容器的坐標范圍 (區(qū)域)   var box_x = $(value).offset().left;  //容器左上角x坐標   var box_y = $(value).offset().top;  //容器左上角y坐標   var box_width = $(value).outerWidth(); //容器寬   var box_height = $(value).outerHeight();//容器高   //判斷放開鼠標位置是否想允許放置的容器范圍內(nèi)   if(e.pageX > box_x && e.pageX < box_x-0+box_width && e.pageY > box_y && e.pageY < box_y-0+box_height){    //判斷是否不在原來的容器下(使用坐標進行判斷:x、y任意一個坐標不等于原坐標,則表示不是原來的容器)    if($(value).offset().left !== drag.old_elm.parent().offset().left      || $(value).offset().top !== drag.old_elm.parent().offset().top){     //向目標容器添加節(jié)點并刪除原節(jié)點     tmp = $(drag.old_elm).clone();     var newObj = $(value).append(tmp);     $(drag.old_elm).remove();     //獲取新添加節(jié)點的對象     drag.new_elm = $(newObj).find(tmp);     }    }   //恢復容器原背景色   $(value).css('background-color', '#FFFFF0');   });  },  };  

      項目demo 請點擊這里。

      感謝各位的閱讀!關于“如何利用jQuery實現(xiàn)簡單的拖曳效果”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

      另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


      本文題目:如何利用jQuery實現(xiàn)簡單的拖曳效果-創(chuàng)新互聯(lián)
      文章出自:http://weahome.cn/article/hhhes.html

      其他資訊

      在線咨詢

      微信咨詢

      電話咨詢

      028-86922220(工作日)

      18980820575(7×24)

      提交需求

      返回頂部