Edited at

HTMLページ生成時のonclickより前に実行する関数を差し込む

More than 1 year has passed since last update.

Webアプリを作る際にサーバサイドでアプリケーションフレームワークなどを使っている場合、

生成されたHTMLのonclick属性にすでに関数がセットされている場合があります。(wicketとかwicketとか…)

jQueryを使って、設定されているクリックイベントよりも前に

任意の関数を差し込みます。


prependEvent

prependEvent = function(target, newEvent) {

var clickHandler;
clickHandler = target[0].onclick; // イベントを退避
target[0].onclick = null; // クリックイベントをリセット
target.click(newEvent); // 差し込み
target.click(clickHandler); // その後にオリジナルをしまう
};

↓こんなカンジで使います。


HTML

<input id="confirmButton" type="button" onclick="alert('first');" value="test input"/>



JavaScript

secondFunction = function() {

alert("second");
};

prependEvent($("input#confirmButton"), secondFunction);


second -> first の順でアラートが出現します。