如何从jQuery ui draggable获取位置x和y?

时间:2012-03-21 18:49:02

标签: jquery jquery-ui

这是一个示例http://jsfiddle.net/naqbq/

重新定位图片后,如何获取xy的当前位置?

<input type="hidden" name="source_x" id="source_x" />
<input type="hidden" name="source_y" id="source_y" />

4 个答案:

答案 0 :(得分:10)

stop回调中,您可以使用ui.helper来访问拖动的元素。然后使用offset,就像布拉德建议的那样:

$("#image").draggable({
    stop:function(event,ui) {
        var wrapper = $("#wrapper").offset();
        var borderLeft = parseInt($("#wrapper").css("border-left-width"),10);
        var borderTop = parseInt($("#wrapper").css("border-top-width"),10);
        var pos = ui.helper.offset();
        $("#source_x").val(pos.left - wrapper.left - borderLeft);
        $("#source_y").val(pos.top - wrapper.top - borderTop);
        alert($("#source_x").val() + "," + $("#source_y").val());
    }
});​

然后,只需将其调整到您的包装器 - 减去其偏移量和边框的宽度 - 并将其设置为输入的val(对不起硬编码边框,但我无法使用css提取编辑:它就在那里!找到{{3}中的解决方案})

another question

答案 1 :(得分:5)

您可以使用jQuery&#39; .offset()

http://api.jquery.com/offset/

alert($('#image').offset().top);
alert($('#image').offset().left);

答案 2 :(得分:2)

您应该使用内置的停止事件:

$("#image").draggable({
    stop: function() { 
        // check for positioning here using .css or .offset
    }
});

答案 3 :(得分:2)

你可以获得top和lef:

$('selector').draggable({
  drag: function(event, ui) {
    ui.position.top; // .left
    // or
    $('selector').position().top; // current position of an element relative to the offset parent
    $('selector').offset(); // retrieves the current position relative to the document. 
  }
})