Jquery implementation layer drag, support callback function

Source: Internet
Author: User
Tags object bind comments extend implement relative string

Recently in writing a CMS Content management system, the front desk is basically using AJAX asynchronous request server, through ASHX processing, return JSON format processing. Because of the need for a more user-friendly interface, so the use of the drag layer operation.

The following is the main core method of drag layer, originally want to write plug-ins, consider not so much time, in the way of the method.

/*   * Jquery 鼠标左键拖动面板   * coder:新生帝   * obj:jQuery选择器名称   * callback:回调函数(拖动停止要执行的函数),可通过$(this)获取 obj 对象   */   function movePanel(obj,callback){      var _evenObj= null // 触发事件的对象      var _move= false ;        // 移动标识      var _x,_y;          //鼠标离控件左上角的相对位置      $(obj).bind({              mousedown: function (e){                  _evenObj=e.currentTarget;       // 当前触发的作用对象                  _move= true ;                  var cx=$(_evenObj).position().left; // 获取父类的X轴偏移量,如果相对屏幕的偏移量,请把position()改为offset();                  var cy=$(_evenObj).position().top;  // 获取父类的Y轴偏移量 , 同上                  _x=e.pageX-cx;                       _y=e.pageY-cy;               },              mouseup: function (){                  //判断方法是否存在                  if ( typeof callback != 'undefined' && callback instanceof Function) {                      $ext=$.extend({},$(obj));   // 为obj对象扩展回调方法                      $ext.addMethod=callback;                      $ext.addMethod();                  }              }      });      $(document).bind({              mousemove: function (e){                  if (e.which==1){              // 判断是否是左键按下                      if (_evenObj!= null ){      // 判断触发事件的对象是否为空                          if (_move){                              var x=e.pageX-_x;                              var y=e.pageY-_y;                              $(_evenObj).css({                                      top:y,                                      left:x                              });                          }                      }                  }              },              mouseup: function (){                  _evenObj= null ;                  _move= false ;              }      }); }

The above is to implement the left mouse button to drag the main method, the following is called:

//别忘了引用Jquery库文件。<br>// 调用=================================================          $( function () {              movePanel( ".move" , function (){   //有回调函数                  alert( "哈哈哈,我是执行完后在显示的,我作用的对象是class为:" +$( this ).attr( "class" )+ " 的div" );              });              movePanel( ".move2" );        //没有回调函数      }); //=====================================================

This allows for a simple method call to implement the drag of the layer, support callback functions, if you want to expand, you can expand in $ (obj). bind ({}).

The following is the HTML code that drags the layer Web site.

<! DOCTYPE html>  


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.