我有一个设置,我想要有条件地还原正在被删除的元素
(我尝试使用accept
事件,但事实证明这种情况经常用于实际目的。 - 不仅如此,它的使用会取消其他事件。)
编辑:实际上并不是它经常运行太多,而是......当它发生时,$(this).attr('id')
在重新访问元素时会变得不正确。 http://jsfiddle.net/UvByv/1/
例如上面:
您将看到方形元素已编号。重新审视广场时,$(this).attr('id')
显然不会及时更新
* 我要做的是有条件地“切换droppability”,在将鼠标悬停在元素上时读取DOM。为了我的目的,似乎accept
并不完全与DOM的其余部分同步。 *
原因是,正如你将在我的例子中看到的那样,作为棋子的正方形,取决于特定时间点的棋子是什么正方形。,我可能不想允许掉落。其他时候,我想。
答案 0 :(得分:3)
如果我理解正确,你想要根据空间当前是否被占用来切换掉落能力,而且当前移动是否是有效的国际象棋移动(毕竟,一些有效的国际象棋动作涉及一件棋子)另一个地方)。这是真的?如果是这样,我认为使用复杂的accept
函数实际上是正确的策略。
此函数接收两条关键信息:被拖动的部分(唯一的“el”参数)和可能被拖动的空间(函数的this
变量)。您注意到accept
函数被多次调用,这是设计的:正如您在jQuery UI source code中看到的那样,当拖动拖动时,accept
函数将评估电路板上的每个可放置空间。这意味着当你开始移动一块时,每个可放置空间将计算它是否可以接受该块。
据我所知,你想要在另一个方块上通过另一个方块来评估这个“在运行中”,但是提前计算它的开销会导致明显的性能问题吗?如果没有,我会选择accept
。
编辑:我创建了一个jsFiddle,演示如何使用.append将棋子从正方形移动到正方形:http://jsfiddle.net/58t7L/3/
凯文编辑:接受,因为在聊天中,Matt帮助对问题进行分层,以表明我在接受中使用$(this)的方法并不完全适用于如何使用accept。 .over:将用于我描述和使用的过程,而'accept'确实需要一个不同的过程,因为它一次评估所有的droppables。聊天链接在以下评论中