Javascript 获取div的X,Y位置

Javascript 获取div的X,Y位置,javascript,jquery,Javascript,Jquery,我有3x3个jQuery div列表,如下所示: div1 div2 div3 div4 div5 div6 div7 div8 div9 当拖放一个div时,我希望得到它相对于其他div元素的X&Y位置。因此,如果将div1拖到div3位置,我需要检索表示div1新位置的位置0,3。我需要使用插件吗 所以,只需要像这样覆盖droppable并获得位置: $( ".myClass" ).droppable({ drop: function( event, ui ) {

我有3x3个jQuery div列表,如下所示:

div1 div2 div3
div4 div5 div6
div7 div8 div9
当拖放一个div时,我希望得到它相对于其他div元素的X&Y位置。因此,如果将div1拖到div3位置,我需要检索表示div1新位置的位置0,3。我需要使用插件吗

所以,只需要像这样覆盖droppable并获得位置:

$( ".myClass" ).droppable({ drop: function( event, ui ) 
            { 
alert('my position in relation to other divs is '+????
            } 
        });  
我添加了一个JSFIDLE:
是否可以检索已丢弃项目的X&Y坐标?在这种情况下,Y位置将始终为零。

将其添加到您的拖动列表中

stop: function(e,ui) {alert(ui.offset.top+","+ui.offset.left);}
(更新)

好的,为了所有的兄弟姐妹

    $( "#sortable" ).sortable({
        update: function(e,ui) {
            console.log(ui.item.parent());
            var i=ui.item;
            ui.item.parent().children().each(
                function (i,e) {
                    alert(ui.item.offset().top-$(e).offset().top);
                }
            );
        },
        revert: true
    });
此处获得X相对距离,Y始终为0,但您可以以类似的方式获得它

我更新了您的,以显示单击元素的坐标,代码片段如下:

$("li").click(function() {
    alert("I am at (" + this.offsetLeft + "," + this.offsetTop + ").");
});
我用叉子叉了你的小提琴:检查可排序列表中的位置:

stop: function() {
    var myPos = $('#sortable').find('li.ui-draggable');
    alert("I am at position "+($('#sortable').find('li').index(myPos)+1));
}

请注意,.index()从0开始计数。因此,我在结果中添加了1…

我们可以看到div的HTML吗?如果您只能识别这九个
元素,则可以使用
.index()的结果进行一些基本的数学运算
jQuery函数来计算特定元素在网格中的位置。或者您可以尝试
div.offsetTop
div.offsetLeft
@Anthony Grist请参见编辑您的小提琴正在使用排序表。你是在用可排序的还是可拖放的来寻找答案?@villecoder sortable,但如果需要,我可以更新为使用可拖动的来代替。返回偏移量,我在寻找X,Y相对于其他div元素的位置。也可以得到X位置,如果有额外的列?对于额外的列,您需要一个表,而不是一个未排序的列表。我不确定.sortable是否适用于表,但您可以找到具有
$('table')的y-pos。查找('tr')。索引(myElement)
,以及具有
$('table')。查找('tr')。查找('td')。索引(myElement)
…请注意,此函数仅适用于预期的第一个拖动事件!如果需要多个拖动元素的位置,则需要扩展代码。。。