2014-03-05 21 views
0

我使用這個jQuery代碼(沒有用戶界面),第一次拖動並移動它的圖像時,它的移動平穩,但2d時間移動慢三維時間更慢,等等...任何代碼錯誤?要發佈什麼?我使用jquery拖動和移動圖像,但幾次移動後,運動變得緩慢和緩慢?爲什麼?

(function($) 
    { 
     $.fn.drags = function(opt) 
     { 
     opt = $.extend({handle:"",cursor:"pointer"}, opt);  
     if(opt.handle === "") 
     { 
      var $el = this; 
     } 
     else 
     { 
      var $el = this.find(opt.handle); 
     } 

     $(this).css('cursor', opt.cursor).on("mousedown", function(e) 
     {   
      if(opt.handle === "") 
      { 
      var $drag = $(this).addClass('draggable'); 
      } 
      else 
      { 
      var $drag = $(this).addClass('active-handle').parent().addClass('draggable'); 
      } 
      var z_idx = $drag.css('z-index'), drg_w = $drag.outerWidth(), pos_x = $drag.offset().left + drg_w - e.pageX;    
      $drag.css('z-index', 1000).parents().on("mousemove", function(e) 
      { 
      if($drag.offset().left<438) 
      {     
       pos_x =438 + drg_w - e.pageX; 
       $('.draggable').offset({left:e.pageX + pos_x - drg_w});         
       return; 
      } 
      else if($drag.offset().left>701) 
      {    
       pos_x =701 + drg_w - e.pageX; 
       $('.draggable').offset({left:e.pageX + pos_x - drg_w}); 
       return; 
      } 
      else 
      {    
       $('.draggable').offset({left:e.pageX + pos_x - drg_w}).on("mouseup", function() {$(this).removeClass('draggable').css('z-index', z_idx);}); 
       $('#rbba_prgrs').width($drag.offset().left-438); 
      } 
      }); 
     e.preventDefault(); // disable selection 
     }).on("mouseup", function() 
     { 
      if(opt.handle === "") 
      { 
       $(this).removeClass('draggable'); 
      } 
      else 
      { 
       $(this).removeClass('active-handle').parent().removeClass('draggable'); 
      } 
     }); 
    } 
})(jQuery); 

回答

0

看起來每次「mousedown」被調用時,它都會附加mousemove的事件偵聽器函數。這是重複的,過了一段時間後,它必須在每次鼠標像素移動時多次執行該功能。找到一種方法在別處附加該監聽器。

+0

我在使用$ drag.parents()綁定之前刪除'mousemove'的偵聽器。unbind(「mousemove」);它工作正常:-)謝謝你...... :-) – user2005049