我有可拖动的元素,可以放在可放置的区域。如果删除了一个元素,则调用drop
函数:
$('#droppable').droppable({
scope: "items",
drop: function (event, ui) {
// this one is called if an element is dropped in this droppable area
}
});
我的可拖动元素:
<div class="drag" data-noteid="10">Drag me</div>
...
$('.drag').draggable({
revert: "invalid",
scope: "items"
});
如果元素被删除,我需要知道的是data-noteid
的值以及可投放区域的相对位置。因此,如果元素放在左上角,则x / y坐标必须为0/0。
我在这里创建了一个完整的工作示例:http://jsbin.com/utivo5/2/
通常我可以访问这样的属性:
alert($(this).data("noteid"));
alert($(this).position().top);
alert($(this).position().left);
但我在这种情况下得到的只是undefined
。
有谁知道如何访问它们?我认为必须使用event
或ui
这是被调用drop
函数的参数吗?!
提前谢谢你&amp;最诚挚的问候,蒂姆。
答案 0 :(得分:15)
在这种情况下,您希望ui
参数获取可拖动,而不是this
引用可放置区域,特此是ui.draggable
。它应该看起来像这样:
drop: function (event, ui) {
var pos = ui.draggable.offset(), dPos = $(this).offset();
alert("nodeid: " + ui.draggable.data("noteid") +
", Top: " + (pos.top - dPos.top) +
", Left: " + (pos.left - dPos.left));
}
对于该位置,我们需要减去droppable的上/左位置以获得您想要的值,即上面的dPos
被删除。
答案 1 :(得分:4)
我发现上述情况并非如此。不知道为什么 - 它总是给我一个X = -7和Y = 229。
但这确实有效(位于drop function handler中):
alert('X pos in drop parent container = ' + (ui.position.top - $(this).offset().top));