为什么jQuery UI的droppable`accept`函数在没有任何内容的情况下运行?

我在小提琴的红色框上定义了一个接受函数.

预期

当draggable进入时,Accept运行一次.

实际

当拖动进入时,接受似乎运行一次,当它离开时,似乎运行一次,如果我将黄色框拖到HTML屏幕的左侧,则很多次.

在行动:http://jsfiddle.net/bjJv8/

我不是在问如何避免这种情况;我可以编写自己的恢复功能,但主要原因似乎是因为这似乎不能正常工作.

要查看我在说什么,请将黄色框拖到屏幕左侧.你会看到接受计数器增加每个阻力像素.到底是怎么回事?当没有任何东西被拖到它上面时,为什么接受这么多次?

最佳答案 Accept可以是一个描述可以拖入droppable的项的选择器(通常是一个类),也可以是一个函数,如果传递给它的对象可以放在目标上,它将返回true.

不方便的是,似乎接受函数在每个拖动事件(开始,停止,进入,离开)以及沿着页面边缘的拖动上运行.如果你的accept函数变得非常大,你可能想把它放在drop / stop方法中,如果它是无效的drop,则还原.

或者,您可以通过确定项目是否已被丢弃或正在被丢弃来启动接受功能,并且仅在此情况下执行繁重的工作(否则返回true,请参阅下面的注释).

附注:如果accept在拖动开始时返回false,则它不会针对任何其他事件运行(除了沿着页面边缘拖动).

点赞