我需要能够使用鼠标移动div,并将div的新位置存储在数据库中以记住显示。我该怎么做?如何使用jquery移动鼠标的div?
回答
我强烈建议你看看jQuery UI和可拖动的交互。基本上,你要的代码添加到您可拖动DIV(假定它有ID =“拖动”):
$("#draggable").draggable();
而且,然后把你的必要行为,停止事件。更具体地讲,你可以这样做:
$('#draggable').draggable({
stop: function(event, ui) { ... }
});
至于数据库中存储,你可以在上面的函数中使用AJAX调用,或者你可以将其存储在页,这样一些形式,发送或其他动作导致位置信息被传递到服务器并与其他数据一起存储。我会小心一个AJAX调用,因为你可能会在每个浏览器上拖动位置数据来轰炸你的数据库。取决于你的应用程序...
这里有一个小的jQuery函数,我只是写了让你拖动div只使用jQuery而不使用jQuery UI。
/* PlugTrade.com - jQuery draggit Function */
/* Drag A Div with jQuery */
jQuery.fn.draggit = function (el) {
var thisdiv = this;
var thistarget = $(el);
var relX;
var relY;
var targetw = thistarget.width();
var targeth = thistarget.height();
var docw;
var doch;
thistarget.css('position','absolute');
thisdiv.bind('mousedown', function(e){
var pos = $(el).offset();
var srcX = pos.left;
var srcY = pos.top;
docw = $('body').width();
doch = $('body').height();
relX = e.pageX - srcX;
relY = e.pageY - srcY;
ismousedown = true;
});
$(document).bind('mousemove',function(e){
if(ismousedown)
{
targetw = thistarget.width();
targeth = thistarget.height();
var maxX = docw - targetw - 10;
var maxY = doch - targeth - 10;
var mouseX = e.pageX;
var mouseY = e.pageY;
var diffX = mouseX - relX;
var diffY = mouseY - relY;
// check if we are beyond document bounds ...
if(diffX < 0) diffX = 0;
if(diffY < 0) diffY = 0;
if(diffX > maxX) diffX = maxX;
if(diffY > maxY) diffY = maxY;
$(el).css('top', (diffY)+'px');
$(el).css('left', (diffX)+'px');
}
});
$(window).bind('mouseup', function(e){
ismousedown = false;
});
return this;
} // end jQuery draggit function //
jQuery函数甚至可以防止div离开边界。基本上你把它附加到你注定要作为拖动激活器的div(比如标题栏)。调用它是如此简单:
$("#titleBar").draggit("#whatToDrag");
所以#titleBar将是你的标题栏div的ID和#whatToDrag将是你想拖到什么ID。我对这些混乱的代码表示歉意,我只是把它篡改了,并认为它会给你一个jQuery UI的替代品,同时还使它易于实现。
doch应该使用$(window).height()而不是$('body'),因为身体只与填充它的内容一样高,可能不是整个窗口。或者,如果身体高于窗户,可能会使用身体,如果您想以某种方式将draggit放在窗口视图下方。但无论如何真棒! – Alendri 2012-09-27 15:28:45
如果有很多对象,那么mousemove会变得昂贵。解决它的一个步骤是绑定mousedown上的处理程序,并在mouseup上解除绑定。这个例子并没有用多个对象编写和测试;特别是当前的解除绑定解除了之前绑定的所有内容(可以通过命名lambda表达式并在解除绑定中引用该名称来解决)。
jQuery.fn.dragdrop = function (el) {
this.bind('mousedown', function (e) {
var relX = e.pageX - $(el).offset().left;
var relY = e.pageY - $(el).offset().top;
var maxX = $('body').width() - $(el).width() - 10;
var maxY = $('body').height() - $(el).height() - 10;
$(document).bind('mousemove', function (e) {
var diffX = Math.min(maxX, Math.max(0, e.pageX - relX));
var diffY = Math.min(maxY, Math.max(0, e.pageY - relY));
$(el).css('left', diffX + 'px').css('top', diffY + 'px');
});
});
$(window).bind('mouseup', function (e) {
$(document).unbind('mousemove');
});
return this;
};
$(document).ready(function() {
return $('#obj').dragdrop('#obj');
});
或者在Parenscript:
(setf (chain j-query fn dragdrop)
(lambda (el)
(chain this
(bind :mousedown
(lambda (e)
(let ((rel-x (- (chain e page-x) (chain ($ el) (offset) left)))
(rel-y (- (chain e page-y) (chain ($ el) (offset) top)))
(max-x (- (chain ($ :body) (width)) (chain ($ el) (width)) 10))
(max-y (- (chain ($ :body) (height)) (chain ($ el) (height)) 10)))
(chain ($ document)
(bind :mousemove
(lambda (e)
(let ((diff-x (min max-x (max 0 (- (chain e page-x) rel-x))))
(diff-y (min max-y (max 0 (- (chain e page-y) rel-y)))))
(chain ($ el) (css :left (+ diff-x :px)) (css :top (+ diff-y :px)))))))))))
(chain ($ window)
(bind :mouseup
(lambda (e)
(chain ($ document)
(unbind :mousemove)))))
this))
- 1. jQuery - 动画DIV上的鼠标移动
- 2. 如何抓住div移动鼠标?
- 3. 使用jquery在弹出div显示鼠标坐标,继鼠标移动
- 4. 使用jQuery来移动基于鼠标位置的div背景
- 5. 点击鼠标移动DIV?
- 6. Div移动鼠标移动中心()
- 7. 在鼠标移动时移动div
- 8. 如何限制鼠标移动到div与jquery库
- 9. jQuery和WebGL - 在鼠标移动时移动div
- 10. 如何移动使用jQuery的鼠标的iframe
- 11. 如何使用jquery取消隐藏鼠标上的活动div
- 12. jQuery的鼠标移动()获取无鼠标移动
- 13. 使用另一个div内的鼠标移动div?
- 14. 如何移动的div类使用jQuery
- 15. jQuery的下拉鼠标移出时,DIV
- 16. 鼠标移动时div的鼠标移动改变鼠标移动时的元素
- 17. 在鼠标移动的div内移动div
- 18. JQuery:鼠标移动事件?
- 19. JQuery PopUp鼠标移动
- 20. jquery鼠标移动到android touch移动
- 21. 用鼠标点击代替鼠标移动图像JQuery Smooth Div Scroll
- 22. 使用鼠标移动图像移动
- 23. Easeljs使用鼠标移动
- 24. 跟随带有jousedown,鼠标移动,鼠标的jquery功能的div
- 25. 带鼠标移动的旋转div
- 26. jquery show hide将鼠标移到div上
- 27. jQuery的工具提示/移动鼠标移动/提示用鼠标位置
- 28. 移动鼠标移动上一个div另一个DIV
- 29. 使用鼠标动态调整div div
- 30. jQuery的鼠标移动动画
是的,这是最好的挑选,如果你不想弄糟与浏览器的测试和所有那些胡扯。 +1); – 2009-02-18 16:45:47