我在这里定制了一个简化的“可拖动”功能:Draggable without jQuery-UI,这就是我到目前为止所拥有的:
$.fn.extend({
canDragMe: function(){
return this.each(function() {
var $this = $(this);
$this = $(this);
return $this.css('cursor', opt.cursor).on("mousedown", function(e) {
var $drag = $this.addClass('draggable');
drg_h = $drag.outerHeight(),
drg_w = $drag.outerWidth(),
pos_y = $drag.offset().top + drg_h - e.pageY,
pos_x = $drag.offset().left + drg_w - e.pageX;
$drag.on("mousemove", function(e) {
$('.draggable').offset({
top:e.pageY + pos_y - drg_h,
left:e.pageX + pos_x - drg_w
}).on("mouseup", function() {
$this.removeClass('draggable');
});
});
e.preventDefault(); // disable selection
}).on("mouseup", function() {
$this.removeClass('draggable');
}
});
});
});
我将像这样使用它:$('#mydiv').canDragMe();
. 但是我需要根据用户输入打开和关闭元素上的拖动。
所以我的问题是,关闭阻力的最简单方法是什么?喜欢$('#mydiv').canNotDragMe();
或可能$('#mydiv').canDragMe(false);
(当然需要插件中的输入选项)。
编辑
我知道我需要某种实现从 mousedown 解除上述操作的绑定?或者以某种方式“破坏”插件?