【发布时间】:2016-03-24 15:04:02
【问题描述】:
我知道如何在将对象拖入正确的可拖放对象时禁用可拖动对象,如下所示,但在拖放到错误的可拖放对象时不知道。 我希望用户即使答案不正确也不能再次拖动,这意味着只能尝试一次。 我使用边缘动画,它使用与普通 JavaScript 不同的语法来获取元素,但其余部分相同。 下面是我的 cmets 代码。
for(j=0;j<35;j++){
sym.$(answers1[j]).addClass('drag'+j);
sym.$('.drag'+j).draggable({
//revert: "invalid" // I do not want revert in any case
stop: function(){
$(this).draggable('disabled'); // will disable when dropped anywhere
//I want only when into the wrong droppable -
//so almost good but not quite right.
}
});
sym.$(droppables[j]).droppable({
accept: ".drag"+j,
drop: function(event,ui){
ui.draggable.draggable( 'destroy' ); // the correct answer is disabled
//I could have used 'disabled' here since it does the same as 'destroy'.
}
});
【问题讨论】:
-
任何一种方式都可以。问题是即使答案不正确也要禁用。当然,现在它通过停止功能禁用舞台上的任何地方。如果没有停止功能,只有当它们处于正确的 droppable 中时,才禁用可拖动对象,这意味着用户可以尝试任何可拖动对象,直到他得到我想要阻止的正确答案。
-
好的,收到更新了。正确和错误的
droppable有什么区别?你不能以同样的方式处理drop事件,让它们都禁用可拖动对象吗? -
没有。也许我可以解释得更好。我假设 3 个可拖动对象和 3 个可放置对象。每个可拖动对象都被其对应的可放置对象接受。如果我将 .drag1 放在 droppable 1 中,它是正确的并且被禁用并且无法从 droppable 中删除。如果我将 drag1 拖到 droppable 2 中,那么它将继续可拖动,直到将其放入 droppable 1。我想要的是 drag 1 停止可拖动,即使它被放入 droppable 2 或 droppable 3 而不仅仅是 droppable 1。
-
这意味着无论它是否与 droppable 匹配,它们都应该停止可拖动。还是我又错过了什么? =)
-
对。不幸的是,如果我使用停止功能,它们在舞台上的任何地方都会被禁用。我希望它们只有在任何可放置的东西中才被禁用,无论是否正确。
标签: javascript jquery jquery-ui jquery-ui-draggable