div位置内的可拖动jquery函数

时间:2014-02-20 11:08:03

标签: javascript jquery html

我使用Jquery脚本在div内部拖动图像(目前只有一个图像)。我目前正在使用此代码:

    var offset = 0,
        xPos = 0,
        yPos = 0;

$(document).ready(function(){
    $(".item").draggable({
        containment: '#house_wall1',

        drag: function(){
            offset = $(this).position();
            xPos = offset.left;
            yPos = offset.top;
            $('#posX').text('x: ' + xPos);
            $('#posY').text('y: ' + yPos);
        },

        // Find original position of dragged image.
        start: function(event, ui) {
            // Show start dragged position of image.
            var Startpos = $(this).position();
            $("div#start").text("START: \nLeft: "+ Startpos.left + "\nTop: " + Startpos.top);
        },

        // Find position where image is dropped.
        stop: function(event, ui) {
            // Show dropped position.
            var Stoppos = $(this).position();
            $("div#stop").text("STOP: \nLeft: "+ Stoppos.left + "\nTop: " + Stoppos.top);
        }
    });
});

我的问题不在于可拖动的图像不在div中,我的问题是位置x和y是根据屏幕尺寸计算的,而不是div。这意味着如果您调整屏幕大小或屏幕分辨率较低,图像实际上将保持与具有其他分辨率的人不同的x和y位置。如何更改图像位置以从div边距而不是屏幕尺寸跟踪x和y。提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用 position() 代替offset() position() 为您提供上/下w.r.t.到元素的父元素而不是文档top / left。

offset = $(this).position();