次のような HTML のシンプルなボタンがあります。
<input type='button' id='btnPrint' value='Print' onclick="changeStylesheet();" />
このボタンには、onclick イベント ハンドラーが既に含まれています。ここで達成しようとしているのは、同じボタンの onclick イベント ハンドラーを作成できるようにすることです。ボタンが押された回数を追跡する 2 番目のメソッドを追加したいと思います。
いくつかのアプローチ:
最初: インライン イベント登録に従って、HTML に別の関数呼び出しを追加します。
<input type='button' id='btnPrint' value='Print' onclick='changeStylesheet();trackThis();>' />
これは最も簡単な方法ですが、私の状況では実行できません。
2 番目: onclick イベントを取得し、未定義かどうかを確認します。次に、JavaScript ネイティブ構文を使用して、無名関数でイベント ハンドラーを再構成します。
var elem = document.getElementById('btnPrint');
var existingHandler = **elem.onclick ? elem.onclick : function () {};**
elem.onclick = function () {
trackThis();
existingHandler();
};
3番目:上記のアプローチは機能しますが、上記の2つのアプローチをjQuery構文で行う方法を学びたいと思っています。
var elem = $('#btnPrint');
var existingHandler = **elem.click ? elem.click : function () {};**
elem.click(function () {
trackThis();
existingHandler()
});
私の #3 ソリューションで何が起こっているかというと、 Uncaught TypeError: Object [object Window] has no method 'trigger' エラーが発生しています。
どんなヒントでも大歓迎です。