Jquery 如何指定哪个可丢弃对象应与嵌套的可放置元素一起使用
Jquery how to specify which droppable should be used with nested droppable elements
我有一个小问题,我自己似乎无法解决。看这个小提琴:JSfiddle
这是我遇到的问题的一个基本示例。我有一个大的div,这是一个可掉落的区域。在这个可放置区域内是多个其他可放置区域。
当元素被丢弃时,内部可放置区域应遍历其代码。相反,来自外部div 的代码似乎正在运行。我做错了什么吗?div 周围的区域应该保持这种状态,因为元素可以放置在这里(而不是正式删除)。
我希望我的问题足够清楚,但我认为小提琴手不言自明。
附言 - 在此示例中调整大小不起作用,但在我的开发环境中正常运行。
生锈和马克,感谢您的回复。
我很抱歉令人困惑的调整器。我刚刚从代码中删除了它。新提琴手
只是为了澄清事情。盒子div 是一个包含多个图像的容器。我正在尝试实现以下目标:http://postimage.org/image/qwhtik04f/灰色虚线框是我示例中的 dropbox2div。这些投递箱周围的空间是投递箱div。
带有电路板的空间是唯一可以在不发生任何事情的情况下丢弃图像的地方。拖动的图像可以捕捉回 dropbox2div。如果将图片拖到保管箱div 上,图片应会还原。
在内部可放置对象上设置 greedy: true
选项将防止事件在外部可放置对象上发生:
jQuery('#dropbox2').droppable({
greedy: true,
drop: function(event, ui) {
// ...
}
});
你的代码对外部<div>
有这个:
$("#dropbox").droppable({
drop: function(event, ui) {
ui.draggable.draggable( 'option', 'revert', true );
}
});
这表示将revert
选项设置为true
当您拖入外部<div>
时。但是,当您放入较小的<div>
时,该选项仍设置为 true
。您需要做的就是在成功降低内部<div>
后更改可拖动元素上的revert
值:
$("#dropbox2").droppable({
drop: function(event, ui) {
ui.draggable.position( { of: $(this), my: 'center', at: 'center' } );
// Add this line
ui.draggable.draggable( 'option', 'revert', false );
}
});
更新:
Mark 指出,我的解决方案不会阻止事件传播到父容器。正如他的回答所示,您需要在初始选项中添加greedy: true
。jQuery文档说:
如果为 true,则将阻止事件在嵌套可放置对象上传播。
这听起来像是你要找的。您仍然需要更改可拖动对象上的 revert
属性,因为greedy
仅在可拖放对象上设置,不会影响可拖动对象的反应。
- 多个嵌套元素上的jQuery.text('')
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- 选择嵌套元素
- iframe作为pre元素的嵌套元素
- 使用 javascript 通过 tag->id->element 获取嵌套元素
- Node.js:用作对象嵌套元素名称的变量
- mousemove抓取嵌套元素的XY偏移
- 事件委派模式,在按钮中使用 addEventListener 和嵌套元素
- 导轨和挖空.js绑定嵌套元素而不在fields_for中使用foreach
- jQuery切换动态生成的嵌套元素
- 如何使嵌套元素在可拖动容器中不可拖动
- KNOCKOUTJS 映射嵌套元素不是绑定的
- 在鼠标悬停时更改容器和嵌套元素的内部HTML内容
- 在单击嵌套元素时将类添加到同级
- 量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调
- 如何使用 Jquery/Javascript 在嵌套元素前面置置
- 防止嵌套元素触发父元素的事件
- 由于嵌套元素,单击侦听器激发两次
- 使用嵌套元素处理触摸事件
- 换行<td><a>标记,同时避免嵌套元素