スタートページJavascript

jQueryの基礎

jQueryのテスト結果の個人用メモです。

関連ページ(実例)
「セレクタの指定方法」
「jQuery関数の起動」
「jQueryによる外部ファイル読込・表示」
同上。さらに多様な例がある。
「jQueryによる外部ファイルのiframeへの読込」
「jQueryによる表示・非表示(toggle)」
「マウスカーソルの動作(hover)」


jQuery利用の環境設定

jQueryは、JavaScriptライブラリの1つです。MITのライセンスですが、無料で利用することができます。また、jQuery(の本体)を用いて。多様な機能を追加したアドオンが多くの人により開発され提供されています。

iQueryは頻繁にバージョンアップされており、1.6.2とか1.10.2などと附番されています。最新のものほど機能の増加、処理方法の改善が図られいますが、廃止される機能もあります。そのため、古いバージョンを利用したアドオンを使うときは、新バージョンでは機能しないこともあります。

jQueryのダウンロード

本格的に利用するのであれば、また、オフライン状況でも利用したときは、jQuery.jsのソースファイルをダウンロードして使います。
http://jquery.com/からダウンロードできます。旧バージョンも揃えてあります。

単一のファイルで、コメントや改行や空白を設けて見やすい形式の Uncompressed 版でも300kb未満、それらを除去した Minified 版(minと略称)では100kbの軽量です。

ダウンロードしたjQuery(文字コードを UTF-8 にします)を、例えば iquery/iquery-1.10.2.min.js としてPCに保存しているならば、head部に
  <script tupe="text/javascript" src="iquery/iquery-1.10.2.min.js"></script>   (A)
を設定します。

iQuery のCDN

jQueryをダウンロードしなくても、iQueryをオンラインで提供しそれを読み込んで使用することができます。そのようなサービスをCDN(Content Delivery Network)といいます。jQuery、Google、Microsoftが有名です。
その場合は、Aのsrc部分を次のようにscriptを記述します。
    src="http://code.jquery.com/jquery-1.5.1.min.js"
    src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"
    src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js"

新バージョンが出現するたびに、これを書き換えるのは面倒です。jQueryサイトでは
    src="http://code.jquery.com/jquery-latest.js"
により、自動的に最新のものが利用できるようになっています。

私は、使えないアドオンがある危険性がありますが、手抜きをモットーに、これを用いて
    <script tupe="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
としています。


jQueryの構造

jQueryのスクリプトの構造を、実行の引金となる記述をHTML側で書くか、スクリプト側で書くかで区分します。

HTMLでの記述型(通常の関数型)

<script>
  function 関数() {               // A
        // ここにjQueryの処理を記述します。
    $("h4").css("color", "red");  // B
  }
</script>

<input type="button" value="実行"
        onclick="関数()">          <!-- C -->
</input>

HTML側(C)の[実行]ボタンをクリック(onClick)したときに、スクリプト側のAの「関数」が起動します。そして、実際の処理Bが行われます。

スクリプトでの記述型(待機型)

<script>
    $(function() {                                    // D
        $("#実行ボタン").click(                         // E
            function() {                              // F
                // ここにjQueryの処理を記述します。
                $(".aaa").text('class="aaa"を書き換えました');  // G
            }
        );
      }
    )
</script>
<input id="実行ボタン" type="button" value="実行">  <!-- H -->
</input> 

「$」が気になりますが、とりあえず「jQueryを使うときのオマジナイ」だとしておきます。
{……} や (……) の対応に留意してください。

HTMLのHでは<input>に名称「id="実行ボタン」を付けています。ところがスクリプト起動の引金となる onClick がありません。
スクリプトDでは、「fuction 関数() 」に相当するものがありません。それで、HTMLが開かれた時点で、起動するのですが、未だ具体的な処理はされません。
起動の引金となるのが、Eです。「id="実行ボタン" の個所([実行]のボタン)がクリックされたら(click)、以下の処理を行う」という意味です。
すなわち、HTMLで行われる操作による処理を事前に記述して待機していることになります。

ページ表示時に自動的に起動

通常のJavascriptでは、HTMLで<body onload="関数()"> とするような場合です。引金が存在しない待機型だといえます。
この場合の記述は非常に単純です。

<script type="text/javascript">
    $(function() {
        // ページ表示時に実行する処理
        $("#表示場所").text("自動的に書き込みました");
    } );
</script>

<body onload="関数()">では、実行される関数が一つに限定されますが、jQueryでは複数の関数が実行されます。

「通常の関数型」でもページ表示時に自動的に起動できます。<script>関数();</script>とすればよいのです。

実例:「jQuery関数の起動」


セレクタ、メソッド、イベント

セレクタとメソッドの関係

実際の処理の部分、
  $("h4").css("color", "red");
  $(".aaa").text('class="aaa"を書き換えました');
の一般形式は、次のようになります。
    $(セレクタ).メソッド;
"h4"や".aaa"がセレクタ、css( )やtext( )がメソッドです。

「セレクタとはHTMLのある個所」であり、「セレクタをメソッドせよ」という意味です。
  $("h4").css("color", "red");
は、<h4>~</h4>の個所(セレクタ"h4")を文字の色を赤にせよ(css("color", "red"))という意味ですし、
  $(".aaa").text('class="aaa"を書き換えました');
は、class="aaa" で囲まれた個所(セレクタ".aaa")を'class="aaa"を書き換えました'の文字列にせよ(メソッドtext(文字列))という意味です。

セレクタとイベントの関係

さらに「スクリプトでの記述型」では、
$("#実行ボタン").click(……);
のように、処理の引金になる記述があります。
この click などを「イベント」とといいます。

一般形式は、
$(セレクタ).イベント(……);
となります。
「セレクトがイベントしたら……をせよ」という意味です。

例:外部ファイルの読込と表示

典型的な例を示します。
    $("#表示場所).load("called.html");
とすると、親HTMLで <div id="#表示場所"></div> と記述した部分に、子HTMLファイル called.html が表示されます。

外部ファイルの読込と表示の実例:「jQueryによる外部ファイル読込・表示」


主なセレクタ

基本形

$("tag")
指定されたタグ名の要素を選択
例:$("div") すべての<div>~</div>の要素
$("#id")
指定されたidを持つ要素を選択
例:$("#chap1") <x id="chap1">~</x>の要素
セレクタは変数でも指定できる
例:var tag="div";
  $(tag)・・・
$(".class")
指定されたクラスを持つ要素を選択
例:$(".note") <x class="note">~</x>の要素

複雑な形

複数指定
,」でつなぐことにより、複数のセレクタを指定できる(orの関係)
例:$("#id1", ",aaa')
[ ] 形式指定
$("[class='aaa"]")
  $(".aaa") と同じです。
$("親セレクタ[子クラスタ]")
  親セレクタの内部で子クラスタがある
  例:$("h4[class='aaa']")
    <h4>タグ内でclass='aaa'がある要素
この形式は、後述のワイルド指定と組み合わせることにより便利な指定ができます。
階層構造
$(親セレクタ 子セレクタ)   「,」ではなく半角空白で分離
  親セレクタの内部にある子セレクタの要素
  例:$("p" "span")
     <p>~</p>の内部にある<span>~</span>の要素
$(親セレクタ > 子セレクタ)   
  親セレクタの直下の子セレクタの要素
  例:$("ol" > "li")
    <ol>~</ol>の直下にある<li>~</li>の要素

補充事項

セレクタを変数で与える
例 function 関数() {
    var セレクタ = ".aaa";
    $(セレクタ).css("color", "red");
  }
(jQueryのなかに通常のJavascriptが記述できます。)
部分指定(ワイルド指定)
$("セレクタ[属性^='値']")  「^」は「先頭」を示す
  セレクタの内部で属性が値で始まっている要素
    例:$("p[#id^='note']")
      p の内部で id が"note1"や"note2"などの要素
$("セレクタ[属性名$='値']")  「$」は「末尾」を示す

 特定の属性が特定した値で終わっている要素
$("セレクタ[属性名*='値']")  「*」は「含む」を示す

 特定の属性が特定した値を含んでいる要素
this:イベントで与えた個所をセレクタで用いる
例:$(function(){
    $("#ボタン").click(
      function() {
        $(this).css("color", "red");
       // $("#ボタン").css("color", "red"); としたのと同じ
    );
  } );

実例:「セレクタの指定方法」


主なメソッド

text(文字列)
文字列に置き換える
例:$("div").text("書換をした") すべてのdiv要素を「書換をした」に書き換える
text()
指定した要素の内容を取り出す
例:yyy = $("#xxx").text() id="xxx"で囲まれた要素をyyyに入れる
css(name, value)
cssのstyle属性を設定
例:css("color", "red") 文字を赤にする
  css("display", "none") 非表示にする(表示はinline)
attr(属性名, 値)
srcやwidthなどの属性に値を入れる/書き換える
例:$(#image).attr("src", "xxx.jpeg")
   <img id="image" src="aaa.jpeg">のsrcをxxx.jpegとする(画像が変わる)
複数指定の形式
  attr( {
    "src": "xxx.jpeg",
    "width": "500px"
} )
toggle()
表示・非表示の切り替え
[表示反転]ボタンをクリックするたびに、id="aaa" の個所は表示されたり非表示になったりします。
例:$("button").click(function () {
    $("#aaa").toggle();
  });
 <p id="aaa">表示</p>
 <p style="display: none">非表示</p>
 <button>表示反転</button>

toggleの実例:「toggle:表示・非表示」


主なイベント

click
$("セレクタ").click(関数)
   セレクタがクリックされた
change
$("セレクタ").change(関数)
  セレクタの値がかわった。テキストボックスやラジオボタンなどの操作時などに使う
hover(fn-over, fn-out)
マウスカーソルがセレクタの要素の上にマウス乗ったときfn-over、外れたときfn-outを実行
  $(セレクタ).click(
    function() {      // マウスが乗ったとき
      fn-over の処理
    },           // 「,」が重要
    function() {      // マウスが離れたとき(elseなどは使わない)
      fn-out の処理
    }
  );

hoverの実例:「hover」