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

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

jquery拖拽自動(dòng)排序插件使用方法詳解

本文為大家分享了jquery拖拽自動(dòng)排序插件,供大家參考,具體內(nèi)容如下

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、遼源網(wǎng)站維護(hù)、網(wǎng)站推廣。

該插件并不是原生js寫的,是基于jquery的,想看原生的話,請(qǐng)繞道而行。

html:




 
 Document
 
 
 


 

js:

(function(win){

 function Drag(opts){
  this.init(opts);
 };

 Drag.prototype = {
  constructor: Drag,

  options: {
   container: '',
   data: [], //可以是數(shù)據(jù),也可以是html標(biāo)簽
   className: 'item'
  },

  //初始化 
  init: function(opts){
   $.extend(this.options, opts);
   this.$el = $(this.get('container'));
   this._render();
   this._bindEvent();
  },

  get: function(key){
   return this.options[key];
  },

  set: function(key, value){
   this.options[key]=value;
  },

  //渲染列表
  _render: function(){
   var me = this, lis = '',
    data = me.get('data') || [];
   for(var i=0,len=data.length;i'+ data[i]+'';
   me.$el.append(lis)
     .find('li').attr('draggable',true)
        .addClass(this.get('className'));
  },

  //綁定事件
  _bindEvent: function(){
   var me = this,
    $lis = $('li', me.$el),
    events = ['dragstart', 'dragenter', 'dragover', 'drop', 'dragend'];
   $.each(events, function(index, item){
    $lis.on(item, function(e){
     me['_'+item+'Handle'] && me['_'+item+'Handle'](e, me);
    });
   })
   $lis.hover(function(){
    $(this).css('background-color','#eee');
   },function(){
    $(this).css('background-color','#fff');
   });
  },

  //開始拖動(dòng)
  _dragstartHandle: function(e){
   var me = this,oe = e.originalEvent;
   if(oe.dataTransfer){
    oe.dataTransfer.setData('text', '');
   }
   me.$drag = $(e.currentTarget);
   $('li',me.$el).removeClass('item-hover');
   me.$drag.addClass('draging').siblings().addClass('no-draging');
  },

  _dragenterHandle: function(e){
   var me = this;
   me.$drop = $(e.currentTarget);
   if(me.timer){clearTimeout(me.timer)} //事件控制
   me.timer = setTimeout(function(){
    if(me.$drag.attr('id') !== me.$drop.attr('id')){
     me._createMask();
     if(me.$drag.index()
'); $mask.css({ position: 'absolute', width: me.$drop.outerWidth(),//new height: me.$drop.outerHeight(),//new left: me.$drop.position().left, top: me.$drop.position().top+me.$el.scrollTop(),//new backgroundColor: '#fff' }); $mask.on({ 'drop': me._dropHandle, 'dragover': me._dragoverHandle }); this.$el.find('.drag-mask').remove(); this.$el.append($mask); } }; win.Drag = Drag; })(window);

踩得坑:

1、關(guān)于dataTransfer, 事件對(duì)象e中是沒有該屬性的,要找該屬性應(yīng)該通過e.originalEvent.dataTransfer中去找。

2、兼容火狐瀏覽器。如果不這樣操作,火狐下是無法運(yùn)行的:

if(oe.dataTransfer){
 oe.dataTransfer.setData('text', '');
}

3、dragover事件每隔 350 毫秒會(huì)被觸發(fā)一次。

4、dragstart、dragenter、dragend事件通過jquery綁定,事件處理函數(shù)中的this指向最外層對(duì)象,例如上面的new Drag();dragover、drop事件通過jquery綁定,事件處理函數(shù)中的this指向被綁定的html標(biāo)簽。

5、jquery獲取包括padding的寬度調(diào)用:$el.outerWidth()和$el.outerHeight()。

6、只有屬性draggable="true"的元素才可以被拖動(dòng)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


新聞標(biāo)題:jquery拖拽自動(dòng)排序插件使用方法詳解
分享網(wǎng)址:http://weahome.cn/article/gidjsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部