jQuery:如果帮助程序不是't已成功删除
jQuery: How to stop a helper from being removed if it wasn't successfully dropped
我有一个带有自定义helper
的draggable
。有时辅助对象是一个克隆,有时它是原始元素。
问题是,当辅助对象是原始元素并且被而不是丢弃在有效的可丢弃对象上时,它会被删除。到目前为止,我的解决方案是这样的:
在我的on_dropped
回调中,我将ui.helper.dropped_on_droppable
设置为true
;
在draggable的stop
回调中,我检查该变量,然后。。。我该怎么办?
$('.my_draggable').draggable({
stop : function(e, ui) {
if (!ui.helper.dropped_on_droppable) {
/* what do I do here? */
}
},
这是正确的方法吗?
好的,我找到了解决方案!它很丑陋,打破了"封装规则",但至少它能起到作用。
请记住这只是针对特殊情况!jQuery可以很好地处理自己的帮助程序删除。在我的例子中,我有一个助手,有时是原始元素,有时是克隆,所以在还原后删除助手并不总是合适的。
element.draggable({
stop : function(e, ui) {
/* "dropped_on_droppable" is custom and set in my custom drop method
".moved_draggable" is custom and set in my custom drag method,
to differentiate between the two types of draggables
*/
if (!ui.helper.dropped_on_droppable & ui.helper.hasClass('moved_draggable')) {
/* this is the big hack that breaks encapsulation */
$.ui.ddmanager.current.cancelHelperRemoval = true;
}
},
警告:这会破坏封装,可能无法向前兼容
我可能在这里遗漏了一些东西,但这不仅仅是添加的情况吗
revert: "invalid"
如果可拖动对象是原始元素,而不是克隆元素,则添加到可拖动对象的选项?
我使用了一个自定义助手,它将多个选择可拖动项聚合到一个div中。这似乎与revert功能不一致,所以我提出了这个方案。元素被手动附加回原始父元素,我通过.data().跟踪它
.draggable({
helper: function() {
var div = $(document.createElement('div'))
.data('lastParent', $(this).parent());
return div;
},
start: function() {
//... add multiple selection items to the helper..
},
stop: function(event,ui) {
$( $(ui.helper).data('lastParent') ).append( $(ui.helper).children() );
}
}
这种方法确实失去了漂亮的动画效果,但它可能对你或其他有这个问题的人有用。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 尽管链接成功并已成功下载,但未找到NPM模块
- 如何从rails中的代码中删除新行( )
- 删除后ExtJS刷新成功
- Ajax 加载 GIF 不会在成功时删除
- Delete方法不适用于Indexed DB HTML5.它返回成功,但未删除记录
- 如果出现成功 = 2 消息,如何删除数据库行
- 在 ajax 成功后删除最接近的 li
- JavaScript aws-sdk S3 deleteObject(s) 成功,但实际上并没有删除任何内容
- 从强制布局中删除两个节点失败,而一个成功
- 仅在成功提交时删除输入掩码
- Jquery删除
来自成功的标签
- 没有调用成功删除消息
- 成功登录后删除Facebook登录按钮
- 如何在JQGrid中的添加、编辑和删除对话框中显示成功消息
- 已成功从数据库中删除数据,但未刷新AngularJS中的当前页面
- 如何将按钮替换为加载gif图像当单击提交按钮,然后在成功删除表单上,并替换为成功消息时
- jQuery:如果帮助程序不是't已成功删除