一般的なjqueryの書き方と解決策
▼ jqueryライブラリが読み込まれた後だと、下記のような書き方が一般的だと思います。
$('.demoClick').click(function() {
$('.demoIn').fadeIn().css('display','block');
});
▼ 先に結論を。下記のような書き方をすれば解決します。
window.addEventListener('DOMContentLoaded', function() {
$('.demoClick').click(function() {
$('.demoIn').fadeIn().css('display','block');
});
});
解説をどうぞ
一般的にjqueryライブラリ(こういうの→<script src="https://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript"></script>)の読み込み後にjqueryの記述を書くかと思います。
ですが、CMSなどの記事投稿ではjqueryライブラリの後に記述するのが難しいでしょう。
厳密には可能ですが、毎回jsファイルに書き込むのは手間です。
僕はワードプレスを利用していますが、こう思ったのです。
「この記事だけしかつかわないしな〜、そのためだけにjsファイルに書くのは嫌だな〜、記述が増えるし管理しづらくなるな〜」
なので、僕はscriptタグで囲って、記事投稿内にjqueryを書いてみました。
が、処理が実行されません…。consoleエラー…。
調べた結果、原因はjqueryライブラリの読み込みより上にjqueyの記述を書いてしまっているからでした。
▼ この問題を回避する一つの解決策がこの呪文。
- addEventListener
- DOMContentLoaded
「addEventListener」「DOMContentLoaded」
window.addEventListener('DOMContentLoaded', function() {
ここに処理を記述してね
});
「addEventListener」は色々なイベントに合わせて実行させる関数。
「DOMContentLoaded」は、HTMLの読み込みと解析が終わったあとに実行されるイベントで、簡単な言い方をすると「cssや画像などのリソース」を読み込む前に処理を実行させられます。
つまりjqueryライブラリを読み込む前でも処理を実行させられるのです。
ものすごく簡単にまとめましたが、ざっとこんなイメージで良いと思います。
サンプルデモ・コード
▼ サンプルコード
クリックしたら…
▼ HTMLコード
<p class="demoClick">クリックしたら...</p>
<p class="demoIn" style="display:none;">僕が出現!(押しても僕は消せないよ。。)</p>
▼ jsコード
window.addEventListener('DOMContentLoaded', function() {
$('.demoClick').click(function() {
$('.demoIn').fadeIn().css('display','block');
});
});