为什么我的 UI/可拖动“创建”事件被传递一个空的“ui”对象
Why is my UI/Draggable 'create' event being passed an empty 'ui' object?
我在div里面有一个图像。 我希望该图像在div 中可拖动,并且我想存储图像的坐标。 在 Draggable 上使用"stop"事件可以很好地做到这一点,并且完全符合我的需求。我还希望在"create"事件上运行相同的代码。 但是,当在"create"事件中使用相同的代码时,传入的"ui"对象似乎是空的:
$(document).ready(function() {
$('#imageitem').draggable({
containment: "parent",
stop: function(event, ui) {
console.log(ui); // results in full object being printed
},
create: function(event, ui) {
console.log(ui); // results in empty object being printed: Object { }
},
});
});
UI/Draggable 的文档显示创建回调应接收"ui"对象:
$( ".selector" ).draggable({
create: function(event, ui) { ... }
});
我正在尝试访问 ui.offset,由于对象为空,它不可用。 如果我理解正确,此时"ui"对象应该已经存在于 DOM 中,因为我只附加了一个可拖动对象。 我不应该在可拖动事件的"创建"期间访问 ui.offset 吗?
诚然,我是jQuery的新手,所以我可能在这里错过了一些东西。
似乎您应该能够在创建可拖动项目时知道其offset
。只需在页面加载后检查元素即可。如果你需要传递这些值,你是否不能为它们创建默认值 - 或者对象将被随机定位?
其次,(回避ui
元素似乎应该有很多关于创建的信息的事实)您应该能够通过查找该元素并在其上调用.offset()
来访问页面上任何元素的偏移量。 即,在您的 create 语句中,通过您要使用的任何选择器找到可拖动元素,并以这种方式找出偏移量:
console.log($("#idOfDraggableElement").offset());
编辑:这是一个jsfiddle,显示了如何在创建时访问属性。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- 如何使用jQuery添加另一个对象的高度作为边距
- 计算从一个对象到另一个对象的路径并沿其移动
- 如何将一个对象添加到每个对象数组中
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 从 javascript 中的对象方法返回一个对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- js:如何制作一个循环,将20个不同的东西添加到一个对象中
- 用javascript创建另一个对象的实例