Для простых случаев, я думаю, вы могли бы сделать что-то вроде этого:
Пример: http://jsfiddle.net/uEEzt/2/
$.fn.bindUp = function(type, fn) {
this.each(function() {
$(this).bind(type, fn);
var evt = $.data(this, 'events')[type];
evt.splice(0, 0, evt.pop());
});
};
Когда вы используете этот плагин .bindUp()
, он просто делает нормальный .bind()
, но затем удаляет событие из конца и помещает его в начало.
Опять же, это будет только для простых случаев.
РЕДАКТИРОВАТЬ: Это должно быть просто сделать эту работу с несколькими событиями, но не пытайтесь использовать его с hover
.
РЕДАКТИРОВАТЬ: Вот версия, которая работает с несколькими (разделенными пробелами) событиями (опять же, не используйте с hover
):
Пример: http://jsfiddle.net/uEEzt/4/
$.fn.bindUp = function(type, fn) {
type = type.split(/\s+/);
this.each(function() {
var len = type.length;
while( len-- ) {
$(this).bind(type[len], fn);
var evt = $.data(this, 'events')[type[len]];
evt.splice(0, 0, evt.pop());
}
});
};
РЕДАКТИРОВАТЬ: Исправлена ошибка в «множественной» версии, где len
переменная не была сброшена.