19
我想要建立一個jQuery插件,允許你拖動和繪製一個矩形(或帶有邊框的div),但我不知道該怎麼做。我不知道任何目前有這種能力,所以我不知道在哪裏尋找如何做到這一點的例子。jQuery的拖動和繪製
我該如何實現拖動和繪製jQuery?
我想要建立一個jQuery插件,允許你拖動和繪製一個矩形(或帶有邊框的div),但我不知道該怎麼做。我不知道任何目前有這種能力,所以我不知道在哪裏尋找如何做到這一點的例子。jQuery的拖動和繪製
我該如何實現拖動和繪製jQuery?
這樣的事情的基礎是相當簡單,當你想想看:
mousedown
事件(可能整個文檔);
event
對象(e.pageX
和e.pageY
)中的鼠標座標,在鼠標位置放置一個絕對定位的元素;mousemove
事件以更改width
和height
對象(基於鼠標座標);mouseup
事件以分離mousemove
事件偵聽器。上述絕對放置的元素是例如具有邊框的<div>
和background: transparent
。
更新:這裏有一個例子:
$(function() {
var $container = $('#container');
var $selection = $('<div>').addClass('selection-box');
$container.on('mousedown', function(e) {
var click_y = e.pageY;
var click_x = e.pageX;
$selection.css({
'top': click_y,
'left': click_x,
'width': 0,
'height': 0
});
$selection.appendTo($container);
$container.on('mousemove', function(e) {
var move_x = e.pageX,
move_y = e.pageY,
width = Math.abs(move_x - click_x),
height = Math.abs(move_y - click_y),
new_x, new_y;
new_x = (move_x < click_x) ? (click_x - width) : click_x;
new_y = (move_y < click_y) ? (click_y - height) : click_y;
$selection.css({
'width': width,
'height': height,
'top': new_y,
'left': new_x
});
}).on('mouseup', function(e) {
$container.off('mousemove');
$selection.remove();
});
});
});
這正是我需要的。謝謝! – Andrew 2012-01-16 19:04:12
爲了以後的任何人的利益,我用解決方案更新了你的答案,以不同的方向拖動。 – Andrew 2012-01-17 04:22:12
我需要這樣一個快速的HTML圖像映射器(矩形只適合我的需要)。結合上面的drag-both-way變化,並輸出html圖像映射源。 http://jsbin.com/ireqix/91 – frumbert 2012-10-16 05:46:58