当前位置:  开发笔记 > 编程语言 > 正文

如何使用jquery用鼠标移动div?

如何解决《如何使用jquery用鼠标移动div?》经验,为你挑选了2个好方法。

我需要能够用鼠标移动div并将div的新pos存储在数据库中以记住显示.我该怎么做?



1> alphadogg..:

我强烈建议你研究jQuery UI和可拖动的交互.基本上,您需要将代码添加到可拖动的div中(假设它具有id ="draggable"):

$("#draggable").draggable();

然后,将您的必要行为放在停止事件中.更具体地说,你这样做:

$('#draggable').draggable({
    stop: function(event, ui) { ... }
});

至于数据库存储,您可以在上面的函数中使用AJAX调用,或者您可以将其存储在页面中,这样一些表单发送或其他操作会导致位置信息传递到服务器并与其他内联存储数据.我要小心一个AJAX调用,因为你可能会在每次浏览器上拖动时用位置数据轰炸你的数据库.取决于你的应用程序......



2> PlugTrade.co..:

这里有一个小jQuery函数,我刚刚编写,让你只使用jQuery拖动div,而不是使用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'),因为body只有填充它的内容高,可能不是整个窗口.或者如果身体高于窗口,可能使用body,如果你想以某种方式将draggit放在窗口视图下方.但无论如何真棒!
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有