jQuery ボタンを押しても反応しない

jQuery の click イベントを使ってボタンを押したら alert を表示する簡単な仕様なのになにも反応しない。
一瞬はまってしまうことって・・・ありますよね?

例えば、こう書きます。
0001<input type="button" id="testbtn1" value="test1">
0002<script src="popup.js"></script>
0003<input type="button" id="testbtn2" value="test2">
popup.js
0001$("#testbtn1").on("click", () => {
0002alert(′test1′);
0003});
0004$("#testbtn2").on("click", () => {
0005alert(′test2′);
0006});
test1 のボタンは alert を出しますが、test2 は alert を出しません。

違いは、イベントを監視するモジュールの設定位置。
test1 は、イベント監視モジュールの読み込み前、test2は、イベント監視モジュールの読み込み後。

つまり、イベント監視の jQuery は、自身が読み込まれる前に設定してある「シンボル/ID」のイベントを監視するわけです。

したがって、イベント監視のモジュールが読み込まれ、そのモジュールがイベント監視用テーブルを作成した後に書かれた test2 は、イベント監視用モジュールのイベントテーブルには登録されていないことになります。

その結果、test1 は、反応するけど、test2 のボタンには反応しないということになります。

わかっていてもついうっかり見落としがちなバグ。気を付けましょう。


読み込んでからでないと動かない

例えば、Html を読み込んでから出ないと動かない Script。

ところが最初の方に書いてしまうとなぜかエラーで止まってしまう。

私のように JavaScript を Ojt で勉強している人にありがちなこと。

JavaScriptのソース上での位置を変える。。。

それに長い時間を費やす。。。

そんな時、JavaScriptプログラマは、迷わず以下のコマンドを使います。

jQuery(window).ready(function(e){・・・} );
ウィンドウの準備ができたら・・・

つまり、サイトページのHTMLや画像がすべて読み込まれたら実行して頂戴。

それが、JQuery(window).ready( );

もう少し早い段階で起動する場合は、

jQuery(document).ready( );
を使います。

画像にいたずらしたいときは、まよわず window

html のform タグ、html そのものでいたずらしたいときは、 document 程度に覚えておくとよいかも。


この記事があなたの一助になれば幸いです。

TOP