2013-02-07 48 views
2

我正在嘗試創建一個拖放調整大小的功能,我遇到了問題。該腳本不會立即對鼠標光標方向變化作出反應。如果我按住按鈕並向右移動光標,然後向左移動,它只會持續增加對象的大小。 demo如何動態調整手柄大小?沒有用戶界面

的Javascript:

var re_dragging = false, re_om_x, re_om_y, re_o_x, re_o_y, re_n_x, re_n_y; 
function resize(resize_btn){ 
    resize_btn.mousedown(function(e){ 
     e.preventDefault(); 
     e.stopPropagation(); 
     re_dragging = true; 
     re_om_x = e.pageX; 
     re_om_y = e.pageY;// origin mouse postion 
     target_wp = $(e.target).closest('.draggable_wp').find('.draggable_el'); 
    }); 
    $(document).mousemove(function(e){ 
     if(re_dragging){ 
      target_wp.width((e.pageX - re_om_x) + target_wp.width()); 
     } 
    }); 
    $(document).mouseup(function(e){ 
     re_dragging = false; 
    }); 
}; 
var resize_btn = $('.draggable_btn_resize'); 
resize(resize_btn); 

HTML:

<div class="draggable_wp"> 
    <div class="wp_img"> 
     <img src=""class="draggable_el"> 
    </div> 
    <div class="btn"> 
     <div class="draggable_btn_resize"></div> 
    </div> 
</div> 

回答

1

你需要使用re_om_x = e.pageX;正在重置後寬更新re_om_x

我添加一個新變量width,因爲在target_wp.width((e.pageX - re_om_x) + target_wp.width());target_wp.width()會帶來偏差,它總是得到一個int。

我重寫mousemove如下:

$(document).mousemove(function (e) { 
    if (re_dragging) { 
     target_wp.width((e.pageX - re_om_x) + width); 
     width = (e.pageX - re_om_x) + width 
     re_om_x = e.pageX; 

    } 
}); 

這裏是演示。 http://jsfiddle.net/U9vre/1/

-1

爲簡單起見,請參閱jQuery UI函數.resizable()。請記住,您需要將jqueryui .css和.js腳本添加到您的頁面。您將只需致電

$("#some_div_to_resize").resizable(); 
相關問題