セレクタで指定した要素をメソッドで操作することを理解出来たら、あとは操作するタイミングです!
操作するタイミングの指定にはイベントを使用します。
今回記事では、よく使う主なイベントとその指定方法を紹介します。
導入編記事も是非ご覧ください!!
イベント
$(セレクタ).イベント名(イベント発生時に実行したい関数)
とすると、要素でクリック等のイベントが発生したときの処理を設定することができます。
要素をクリックしたときのイベント
.click()
で、要素をクリックした時の処理を指定できます。
$(function(){
// IDがhogeの要素を取得し、クリックしたときの処理を指定
$("#hoge").click(function(){
// IDがfugaの要素を取得し、表示・非表示状態を切替する
$("#fuga").toggle()
})
});
要素にマウスカーソルをかざしたときのイベント
.hover()
で、要素にマウスカーソルをかざした時(ホバー)の処理を指定できます。
引数にはカンマ区切りで二つの関数を渡し、一つ目の関数は要素内にカーソルが入ったタイミング、二つ目の関数は要素内からカーソルが出たタイミングでの処理となります。
$(function(){
// IDがhogeの要素を取得し、ホバーしたときの処理を指定
$("#hoge").hover(function(){
// 要素内にカーソルが入った時
$(this).css("background","red")
},function(){
// 要素内からカーソルが出た時
$(this).css("background","white")
})
});
スクロールしたときのイベント
.scroll()
で、スクロール時の処理を指定できます。
$(function(){
// windowを取得し、スクロールした時の処理を指定
$(window).scroll(function (){
// windowの上部からのスクロール量を取得して、変数stに入れる
var st = $(window).scrollTop();
})
});
HTMLの読込が完了したときのイベント
$(document).ready()
でHTML読込完了時の処理を指定できます。
但しこれは、HTML文書の読込が終わったときに発生するイベントで、画像がロード完了したかには関係しません。
画像のロードも終わった事を確認したい場合は、window.onload
に、読込完了時に実行したい関数を入れるのがよくやる手法です。
基本的にはjQueryでの処理はこの中に書いていきましょう。
$(document).ready(function(){
// HTMLの読込が完了したら実行する処理を記述
});
また、今までのコード例で紹介していたように短く書く事もでき、通常こちらを使います。
$(function(){
// HTMLの読込が完了したら実行する処理を記述
});
イベントに渡す関数の中でthisとは?
JavaScriptにおいて、各種イベントに渡す関数内で、this
を使うと、イベントの発生した要素自身を参照できます。
このthis
を$(this)
としてjQueryオブジェクト化すると、イベント発生時に自分自身をjQueryで操作することができます。
$(function(){
$("#hoge").hover(function(){
// ホバーイベントの発生したIDがhogeの要素の背景色を赤色に
$(this).css("background","red")
},function(){
// ホバーイベントの発生したIDがhogeの要素の背景色を青色に
$(this).css("background","white")
})
});
まとめ
これで、jQueryについての基礎的な部分は終わりです。
色々と紹介しましたが、基本となるのは
// jQueryで記述したコードはコレで囲む
$(function(){
// セレクタで指定した要素にイベントを指定する
$(セレクタ).イベント(function(){
// イベントの発生時にセレクタで取得した要素を操作する場合
$(セレクタ).メソッド()
// イベントの発生した要素自身を操作する場合
$(this).メソッド()
})
});
の形になります。
次回記事で、実際によくある実装を紹介します!!
次の記事
実務でよくある実装例を紹介します!