Если вы не боитесь связываться с кишками JQuery:
// "prepend event" functionality as a jQuery plugin
$.fn.extend({
prependEvent: function (event, handler) {
return this.each(function() {
var events = $(this).data("events"),
currentHandler;
if (events && events[event].length > 0) {
currentHandler = events[event][0].handler;
events[event][0].handler = function() {
handler.apply(this, arguments);
currentHandler.apply(this, arguments);
}
}
});
}
});
$("#someElement").prependEvent("click", function() {
whatever();
});
Смотрите вживую: http://jsfiddle.net/Tomalak/JtY7H/1/
Обратите внимание, что должно быть уже currentHandler
или функция ничего не сделает.
Отказ от ответственности: Я рассматриваю это как взломанный. Это зависит от внутренних компонентов jQuery, которые могут измениться в следующей версии библиотеки. Он работает сейчас (я тестировал jQuery 1.7.2), но не удивляйтесь, если он сломается с будущей версией jQuery.
Возможный дубликат [события jQuery: добавление обработчика обратного вызова к уже существующим] (http://stackoverflow.com/questions/9052349/jquery-events-prepend-a-callback-handler-to-already-existing -ones) –