如何找到可移动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;
}
}
});
});
答案 0 :(得分:0)
使用jQuery.offset()
获取相对于文档的偏移坐标或jQuery.position()
以获取相对于父元素偏移的坐标。
两种方法都会返回一个属性为top
和left
的对象。
var $movableDiv = $('#img'),
imgAbsolutePosition,
setImgAbsolutePosition;
setImgAbsolutePosition = function() {
imgAbsoultePosition = $movableDiv.offset();
};
$('#img').animate({top: "+=10px"}, {
duration: 'fast',
complete: setImgAbsolutePosition
});
如果元素的位置发生了变化,您必须使用jQuery.offset()
再次检索它,并更新变量left
和top
。
它给了我一个不是原始css值但接近它的数字
考虑元素及其容器的border
,padding
和margin
。
另外 Example