gpt4 book ai didi

jquery - 如何获取可拖动对象的位置

转载 作者:行者123 更新时间:2023-12-03 21:30:38 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery 获取可拖动对象的 xy

场景是,我将一个对象拖放到另一个对象上,并希望获取拖放对象的位置。

编辑:现在我可以获取对象的位置,但我需要更多:

这是我尝试过的:

<script>
$(function() {
$('#draggable').draggable({
drag: function() {
var offset = $(this).offset();
var xPos = offset.left;
var yPos = offset.top;
$(this).text('x: ' + xPos + 'y: ' + yPos);
}
});

$("#droppable").droppable({
drop: function(event, ui) {
$(this)
.addClass("ui-state-highlight")
.find("p")
.html("Dropped!");
}
});
});
</script>

现在我可以获得可拖动对象的位置,但我需要它可以调整大小,除了获取可拖动对象的 x,y 之外,我还需要它的大小。

最佳答案

您可以使用拖动事件:

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

JS Fiddle demo .

此演示由 drag event 为您带来,以及方法offset()text() .

<小时/> 编辑以回应OP的评论,对原始问题:

David, actually what I need is a bit more complicated but you might do great help. What I want to do is to put a draggable object and a droppable image in a panel and drag the draggable object on the image and get the position of where it was dropped. I'll also need the draggable object to be resizable and get the size of it at the end too :) thank you

...呃,哇啊...

认为这涵盖了所要求的基础知识:

$('#dragThis').draggable( {
containment: $('body'),
drag: function() {
var offset = $(this).offset();
var xPos = offset.left;
var yPos = offset.top;
$('#posX').text('x: ' + xPos);
$('#posY').text('y: ' + yPos);
},
stop: function() {
var finalOffset = $(this).offset();
var finalxPos = finalOffset.left;
var finalyPos = finalOffset.top;

$('#finalX').text('Final X: ' + finalxPos);
$('#finalY').text('Final X: ' + finalyPos);
},
revert: 'invalid'
});

$('#dropHere').droppable({
accept: '#dragThis',
over: function() {
$(this).animate({
'border-width': '5px',
'border-color': '#0f0'
}, 500);
$('#dragThis').draggable('option', 'containment', $(this));
}
});

Updated JS Fiddle demo .

Newly-updated JS Fiddle demo, featuring revert: invalid ,因此将可拖动 div 放置在除可放置 div 之外的任何位置都会导致可拖动 div 以动画方式返回到其起始位置。如果那样的话,我们将不胜感激。或者根本想要...

为了满足 draggable 对象也可调整大小的要求,我认为这是不可能的,因为 draggable()ressized() 响应相同交互。在某种程度上,这也许是可能的,但恐怕目前超出了我的能力范围。

<小时/>

编辑以添加“高度/宽度”要求,并整理一些内容并改进 CSS。也就是说:

HTML:

<div id="dragThis">
<ul>
<li id="posX">x: <span></span></li>
<li id="posY">y: <span></span></li>
<li id="finalX">Final X: <span></span></li>
<li id="finalY">Final Y: <span></span></li>
<li id="width">Width: <span></span></li>
<li id="height">Height: <span></span></li>
</ul>
</div>

<div id="dropHere"></div>

CSS:

#dragThis {
width: 8em;
height: 8em;
padding: 0.5em;
border: 3px solid #ccc;
border-radius: 0 1em 1em 1em;
background-color: #fff;
background-color: rgba(255, 255, 255, 0.5);
}

#dragThis span {
float: right;
}

#dragThis span:after {
content: "px";
}

li {
clear: both;
border-bottom: 1px solid #ccc;
line-height: 1.2em;
}

#dropHere {
width: 12em;
height: 12em;
padding: 0.5em;
border: 3px solid #f90;
border-radius: 1em;
margin: 0 auto;
}

jQuery:

$('#dragThis').draggable({
containment: $('body'),
drag: function() {
var offset = $(this).offset();
var xPos = offset.left;
var yPos = offset.top;
$('#posX > span').text(xPos);
$('#posY > span').text(yPos);
},
stop: function() {
var finalOffset = $(this).offset();
var finalxPos = finalOffset.left;
var finalyPos = finalOffset.top;

$('#finalX > span').text(finalxPos);
$('#finalY > span').text(finalyPos);
$('#width > span').text($(this).width());
$('#height > span').text($(this).height());
},
revert: 'invalid'
});

$('#dropHere').droppable({
accept: '#dragThis',
over: function() {
$(this).animate({
'border-width': '5px',
'border-color': '#0f0'
}, 500);
$('#dragThis').draggable('option', 'containment', $(this));
}
});

JS Fiddle demo, of the above .

关于jquery - 如何获取可拖动对象的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com