3

我有一个设置,我想有条件地还原正在删除的元素

(我尝试使用该accept事件,但事实证明,出于实际目的,它运行得太频繁了。-不仅如此,它的使用还取消了其他事件。)

编辑:实际上并不是它运行得太频繁,而是......当它触发时,$(this).attr('id')在重新访问悬停在元素上时变得不正确。http://jsfiddle.net/UvByv/1/

例如上面:

  1. 抓住一块并将鼠标悬停在各个方块上。
  2. 注意它悬停的平方数。它并不总是按应有的方式更新。

您将看到方形元素已编号。当一个广场被重新访问时,$(this).attr('id')显然不再及时更新

*我要做的是有条件地“切换可放置性”,在将鼠标悬停在元素上时读取 DOM。出于我的目的,它似乎accept与 DOM 的其余部分不完全同步。*

原因是,正如您将在我的示例中看到的那样,作为棋子的正方形,取决于棋子在特定时间点结束的正方形。我可能不想让下落。其他时候,我想。

4

1 回答 1

3

如果我理解正确,您不仅要根据空间当前是否被占用,还要根据当前移动是否是有效的国际象棋移动来切换可放置性(毕竟,一些有效的国际象棋移动涉及一块代替其他)。这是真的?如果是这样,我认为使用复杂的accept函数实际上是正确的策略。

这个函数接收两条关键信息:被拖动的部分(唯一的“el”参数)和可能被拖动到的空间(这是函数的this变量)。您注意到该accept函数被多次调用,这是设计使然:正如您在 jQuery UI源代码中所见,当拖动可拖动对象时,accept将为板上的每个可放置空间评估该函数。这意味着当您开始移动一块时,每个可放置空间都会计算它是否可以接受该块。

我知道您想在一块经过另一个方块时“即时”评估这个,但是提前计算它的开销是否会导致明显的性能问题?如果没有,我会去accept

编辑:我创建了一个 jsFiddle,演示如何使用 .append 将块从一个正方形移动到另一个正方形:http: //jsfiddle.net/58t7L/3/

凯文编辑: 接受,因为在聊天中,马特帮助对问题进行了分层,以表明我在接受中使用 $(this) 的方法并不完全适合接受的使用方式。.over: 将用于我描述和使用的过程,而“接受”确实需要一个不同的过程,因为它会同时评估所有可放置对象。聊天链接在下面的评论中

于 2012-07-27T00:11:37.033 回答