【发布时间】:2013-11-29 08:51:45
【问题描述】:
有谁知道触发 jQuery 可排序事件的顺序是什么?
我问这个是因为我遇到了stop 和update 的问题。对我来说,update 事件将在 stop 事件之后发生更有意义,但事实并非如此。
这是否记录在任何地方或有人对此进行过调查?我找不到合适的列表,也不想浏览代码。
【问题讨论】:
标签: javascript jquery jquery-ui
有谁知道触发 jQuery 可排序事件的顺序是什么?
我问这个是因为我遇到了stop 和update 的问题。对我来说,update 事件将在 stop 事件之后发生更有意义,但事实并非如此。
这是否记录在任何地方或有人对此进行过调查?我找不到合适的列表,也不想浏览代码。
【问题讨论】:
标签: javascript jquery jquery-ui
事件顺序为:
create - 创建可排序时触发
start - 排序开始时触发
activate - 在拖动开始时为每个连接的列表触发
over - 当可排序项目被移动到可排序列表时触发
排序 - 排序期间触发
change - 在排序期间触发,但仅在 DOM 位置发生变化时触发
beforeStop - 在排序停止前触发,占位符/助手
update - 在停止排序且 DOM 位置发生变化时触发
deactivate - 在排序停止之前触发,传播到所有可能的连接列表
out - 当可排序项目从可排序列表中移出时触发
stop - 排序停止时触发
还有其他可能发生的事件:
接收/删除 - 当项目在列表之间移动时触发
不知道为什么这在 jQueryUI 网站上不是更清楚。
请注意,根据触发的事件,ui 参数会有所不同。值得查看 API 文档以明确这是什么并对其进行调试。
【讨论】:
停止事件是最后一个被触发的事件。检查here 以查看 Jquery 可排序元素的所有事件。
【讨论】:
从目前的源码来看,update事件被放入了一个队列中:
delayedTriggers.push(function(event) {
this._trigger("update", event, this._uiHash());
}); //Trigger update callback if the DOM position has changed
然后在beforestop 和stop 之间触发排队的事件:
this._trigger("beforeStop", event, this._uiHash());
for (i=0; i < delayedTriggers.length; i++) {
delayedTriggers[i].call(this, event);
} //Trigger all delayed events
this._trigger("stop", event, this._uiHash());
因此,在当前实现中,update 事件将始终在stop 事件之前触发。
【讨论】: