如何在Jquery中找到可移动div的坐标

时间:2014-07-21 20:59:02

标签: javascript jquery

如何找到可移动div的坐标?我希望能够在移动后找到坐标,以便我可以为游戏添加边界,让它从divs位置拍摄激光等等。非常感谢你提前!

修改

我试过用这个:

var offsets = $('#img').offset();
var top = offsets.top;
var left = offsets.left;
if (left > 0) {$('#img').animate({left: "-=10px"}, 'fast');}

这不起作用所以我测试看看发生了什么:

setTimeout(function() {alert(left);}, 5000);

然后我移动它并发现它没有更新Div的位置,因为在警报激活之后它给了我一个不是原始css值的数字但接近它可能是因为它是一个不规则的div或只是偏移的方式。


var state = 1;


$(document).ready(function() {

$(document).keydown(function(key) {
    if(state == 1) {
    switch(parseInt(key.which,10)) {
        // Left
        case 37:
            $('#img').animate({left: "-=10px"}, 'fast');
        state = 2;
        setTimeout(function() {
            state = 1;
        }, 200);
            break;
        // Up
        case 38:
        $('#img').animate({top: "-=10px"}, 'fast');
        state = 2;
        setTimeout(function() {
            state = 1;
        }, 200);
            break;
        // Right
        case 39:
        $('#img').animate({left: "+=10px"}, 'fast');
        state = 2;
        setTimeout(function() {
            state = 1;
        }, 200);
            break;
        // Down 
        case 40:
        $('#img').animate({top: "+=10px"}, 'fast');
        state = 2;
        setTimeout(function() {
            state = 1;
        }, 200);
            break;
    }
    }
});
});

1 个答案:

答案 0 :(得分:0)

使用jQuery.offset()获取相对于文档的偏移坐标或jQuery.position()以获取相对于父元素偏移的坐标。

两种方法都会返回一个属性为topleft的对象。

var $movableDiv = $('#img'),
    imgAbsolutePosition,
    setImgAbsolutePosition;

setImgAbsolutePosition = function() {
    imgAbsoultePosition = $movableDiv.offset();
};

$('#img').animate({top: "+=10px"}, {
    duration: 'fast',
    complete: setImgAbsolutePosition
});

如果元素的位置发生了变化,您必须使用jQuery.offset()再次检索它,并更新变量lefttop

  

它给了我一个不是原始css值但接近它的数字

考虑元素及其容器的borderpaddingmargin

另外 Example