このページの本文へ

  • twitterでつぶやく
  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

Web制作の現場で使えるjQuery UIデザイン入門 ― 第6回

jQueryのイベントをチュートリアルで学ぶ(前編)

2009年08月19日 18時46分更新

文● 西畑一馬/to-R


■イベントが発生した要素を取得する

 前ページでイベントの基本的な使い方を紹介しましたが、イベントを設定したい要素は1つとは限りません。複数の要素に対して設定したい場合もあります。

 次のサンプル05は、eqフィルターを利用して複数のa要素に対してそれぞれ異なるクリックイベントを設定しています。eqフィルターは特定の要素のうち、指定した順番の要素を取得するセレクターでした(関連記事)。

サンプル05((X)HTML部分)


<ul>
    <li><a href="fower.jpg"></a></li>
    <li><a href="sea.jpg"></a></li>
    <li><a href="Jellyfish.jpg">くらげ</a></li>
    <li><a href="Building.jpg">建物</a></li>
</ul>
<p><img src="flower.jpg" alt="花" /></p>

サンプル05(スクリプト部分)


$(function(){
    $("a:eq(0)").click(function(){
        $("img").attr("src","flower.jpg").attr("alt","花");
        return false;
    })
    $("a:eq(1)").click(function(){
        $("img").attr("src","sea.jpg").attr("alt","海");
        return false;
    })
    $("a:eq(2)").click(function(){
        $("img").attr("src","Jellyfish.jpg").attr("alt","くらげ");
        return false;
    })
    $("a:eq(3)").click(function(){
        $("img").attr("src","Building.jpg").attr("alt","建物");
        return false;
    })
})

サンプル05(実行結果)

images/http://editors.ascii.jp/m-kobashigawa/jquery_sample/006/sample5.jpg
サンプル05の実行画面。a要素をクリックすると画像が変更される

 画像を変更する機能は実装できましたが、このままだとコードがかなり長い上に、あとで変更する場合にややこしくなります。a要素の出現順が変更されたらeqフィルターの番号を変更しなくてはなりませんし、項目が追加されたらその分プログラムを追加しなくてはいけません。

 そこで便利なのが、イベントが発生した要素を取得するセレクター $(this) です。イベントを設定している click(function(){...})内 $(this) と書くと、イベントが発生した要素を取得できます。 $(this) を使えば、先ほどの長いプログラムを以下のように短く記述できます。

サンプル06(スクリプト部分)


$(function(){
    $("a").click(function(){
        $("img").attr("src",$(this).attr("href")).attr("alt",$(this).text());
        return false;
    })
})

 このサンプルでは、$(this).attr("href") でクリックされた要素のhref属性、$(this).text() でクリックされた要素内のテキストを取得し、それぞれimg要素のsrc属性、alt属性に設定しています。これならソースコードもすっきりしますし、li要素の数や順番を変えたい場合も(X)HTMLを書き換えるだけで済みます。

 イベントが発生した要素を取得する $(this) はクリックイベント以外でも重宝しますので覚えておきましょう。

この連載の記事

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

みんなが買ってる最新アイテムはコレだ!

VOCALOID3 スターターIA ARIA ON THE PLANETES

VOCALOID3 スターターIA ARIA ON THE PLANETES

ヤマハ

17,745円〜

24人が購入

Google上位表示 64の法則 (WEB PROFESSIONAL)

Google上位表示 64の法則 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

71人が購入

標準HTML5タグリファレンス (WEB PROFESSIONAL)

標準HTML5タグリファレンス (WEB PROFESSIONAL)

アスキー・メディアワークス

2,205円〜

60人が購入

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

スペックコンピュータ

4,262円〜

23人が購入

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

39人が購入

メモリーカード 32GB (PCH-Z321J)

メモリーカード 32GB (PCH-Z321J)

ソニー・コンピュータエンタテインメント

7,772円〜

9人が購入

Windows 7 Home Premium 通常版 Service Pack 1 適用済み

Windows 7 Home Premium 通常版 Service Pack 1 適用済み

マイクロソフト

20,271円〜

4人が購入

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

マイクロソリューション Micro Solution Inc.

59人が購入

Amazon.co.jp