SlideShare une entreprise Scribd logo
1  sur  46
Kawaz的jQuery入門
                                                        第1回 Kawaz Web勉強会




Copyright (C) 2011 www.kawaz.org All Rights Reserved.                      1
このセッションについて
  目標
   普段プログラムを書かない人が
     jQueryのコアな動作を理解する
     jQueryで簡単なものを作ってどや顔できるようになる
     Web上にあるプラグインを使えるようになる
  参考資料
   詳しく作るのが面倒だったので、以下のスライドを読んでください
   このスライドを見て、気になった部分、説明が足りない部分を補足して
   いく感じです
     ノンプログラマーのためのjQuery入門
     http://www.slideshare.net/hayatomizuno/jquery-7665168
  バージョンについて
   最新版は1.7.1(12/1/6現在)ですが、イベント周りの仕様が若干変わっ
   ているため、1.6.4基準でお話しします

Copyright (C) 2011 www.kawaz.org All Rights Reserved.    2
jQueryってなに?
        JavaScript向けライブラリ
        少ないコード量でパワフルな実装が可能
        今のWeb界隈では必須技術(giginet調べ)
        無料
        オープンソース
        改変・再配布・商用利用可能(MIT)
        バージョンアップが早い
        拡張が豊富(jQueryプラグイン)




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   3
下準備
  headにjQueryを読み込ませよう
   <!DOCTYPE HTML>
   <html lang="en">
   <head>
     <meta charset="UTF-8">
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/
   1.6.4/jquery.min.js"></script>

     <script type="text/javascript" src="jquery.hello.js"></script>
     <title>Hello, jQuery</title>
   </head>
   <body>
   </body>
   </html>

 自分で公式サイトからファイルをダウンロードしてきて、読み込ませても
 良いですが、以下のサイトからGoogleがホスティングしているものに直
 リンクするのがオススメです。楽だし
 http://scriptsrc.net/
 ※jQueryの宣言は、自分のコードを読み込ませるより前に行ってくださ
 い

Copyright (C) 2011 www.kawaz.org All Rights Reserved.                                   4
jQueryを書いてみよう
$(function(){
  $('body').append('Hello, jQuery!');
});


 わずかこれだけ!
 先ほどのHTMLファイルを開いて、Hello, jQueryとだけ表示されていれ
 ば成功です!




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   5
jQuery超入門

         $('.kawaz').css('background', 'red');




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   6
jQuery超入門

         $('.kawaz').css('background', 'red');
     jQueryオブジェクト(主体)                                   メソッド(命令)



            jQueryオブジェクト(主体).メソッド(命令)で構成されている!
            上の例の場合、classがkawazの要素の背景色を赤くする




Copyright (C) 2011 www.kawaz.org All Rights Reserved.              7
jQuery超入門

         $('.kawaz').css('background', 'red');
     jQueryオブジェクト(主体)                                   メソッド(命令)



            jQueryオブジェクト(主体).メソッド(命令)で構成されている!
            上の例の場合、classがkawazの要素の背景色を赤くする



             基本的に、jQueryコーディングは
                    操作したい要素の選択、探索
                    その要素に対してどのような操作をするか
             2つに帰結する!




Copyright (C) 2011 www.kawaz.org All Rights Reserved.              8
DOMってなに?


  DOM = Document Object Model
   HTML上にある要素をプログラムで扱いやすく定めたもの




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   9
DOMってなに?
  超基本:HTMLは木構造になっている
HTML
  HEAD
    TITLE くだものいちらん
  BODY
    UL
       LI りんご
       LI バナナ
       LI みかん




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   10
DOMってなに?
  超基本:HTMLは木構造になっている
HTML
  HEAD
    TITLE くだものいちらん
  BODY
    UL
       LI りんご    DOMノード
       LI バナナ
       LI みかん




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   11
DOMってなに?
 超基本:HTMLは木構造になっている
HTML
  HEAD
    TITLE くだものいちらん
  BODY
    UL
       LI りんご    DOMノード
       LI バナナ
       LI みかん

  各ノードは入れ子の構造になっている
        LIの各ノードから見てULは親ノード、BODYより上は先祖ノードと
      言ったりする
              子ノード、子孫ノード、兄弟ノードといった言い方もする
              いとこノードとかはとこノードという言い方は聞いたことがな
            い……
Copyright (C) 2011 www.kawaz.org All Rights Reserved.   12
jQueryオブジェクトとは
jQueryオブジェクトとは、DOMノードの集合に対して一定の操作を行
えるようにしたもの
jQueryオブジェクトを生成するには$関数を使う(ダラー関数とか読む)
$関数は引数によって、既存のノードを取ってきたり、新しいノードを生
成したり、かなり柔軟にjQueryオブジェクトを生成してくれる



 ちなみに $()はjQuery()という関数の別名である
   jQueryを他のライブラリ(prototype.js)などと一緒に使うときは$が競合してしまうことがあるため、$()では
  なく、jQuery()を使った方が良いとされているが、現状、併せて使うことがほとんどないため、気にしなくて良
  い気がする




Copyright (C) 2011 www.kawaz.org All Rights Reserved.          13
$関数の使い方1
  既存のDOM要素を選択する
   CSSセレクタのようなものを引数に渡す
           CSSセレクタに独自の拡張がされていたり、CSSセレクタに似せて実装されている別物なので「ようなもの」と表記

       ドキュメント上から、これらにマッチするDOM要素全てを含んだ
      jQueryオブジェクトを生成する
                       // 全てのp要素
                       $('p');
                       // kawazをclassに持つ要素
                       $('.kawaz');
                       // contentをidに持つ要素の直下にあるリスト要素
                       $('#content > li');
                       // リンク先がhttp://www.kawaz.orgから始まるa要素
                       $('a[href^="http://www.kawaz.org"]');
                       // 各親要素に対して3n+1(1, 4, 7…)番目にあるリスト要素
                       $('li:nth-child(3n+1)');
                       // 選択状態にあるテキストフィールド
                       $('input[type="text"]:selected');

Copyright (C) 2011 www.kawaz.org All Rights Reserved.               14
$関数の使い方2
  新しいDOM要素を生成する
   タグやHTMLをそのまま文字列で引数として渡す
   新しいDOM要素が生成され、それを含んだjQueryオブジェクトが生成
   される

                                   // 空のp要素を生成する
                                   $('<p>');
                                   // 文章を含んだp要素を生成する
                                   $('<p>おなかすいた</p>');
                                   // 入れ子にもできる
                                   $('<p><b>ねむたい!!!!</b></p>');

他にも、DOM要素をオブジェクトとして直接渡したり、配列など別のオブジェクトを渡してjQueryオブジェクトを生
成することができるが、割愛する。




Copyright (C) 2011 www.kawaz.org All Rights Reserved.             15
jQueryオブジェクトと変数
  jQueryオブジェクトは普通の変数に格納できる
    どんな名前の変数に格納することでもできるが、$から始まる変数名の
    変数に格納することを強くオススメする

     var $hoge = $('.hoge'); // いい
     var hoge = $('.hoge'); // 問題なく動くけど避けるべき

これはルールではなくマナー、お作法
jQueryを書く人の間では「$から始まる変数にはjQueryオブジェクトが
格納されている」という暗黙の了解がある
      当たり前だが、逆にほかのオブジェクトを$から始まる変数に入れないでください


jQueryに限らず、他の人を思いやって書けるプログラマは良いプログラ
マです




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   16
$(function(){});
  jQueryを書き始める前に毎回これで囲んで書くことを強く推奨!

     $(function(){
     });

  理由1:遅延実行させるため
   これに囲むと、確実にHTMLの描画が終わってから実行される
     囲まないと、HTMLの描画前に実行されるかもしれない
    DOMノードが生成される前にセレクタを使うと取得できない
     初心者が一番ハマるところだとおもう
  理由2:名前空間を分離させるため
   他のスクリプト、ブラウザ拡張、コンソールなどにより、中の状態を
   書き換えられることを防ぐことができる

もちろん、プラグインを作るなど、囲んではいけない場合も存在するが、それは理解してきてからで良いと思う




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   17
jQueryの基本はこれだけ!
 いままで説明したところで、「操作したい要素の選択・探索」は大体マス
 ターしました。
 あとは「命令」を覚えていくだけ!
  基本的な命令だけ押さえておけばOK
  残りは以下のページに「命令のカタログ」的なものがあるので、
  ボーッと眺めて「こんなのあるんだー」と思っておけば完璧
  jQuery 日本語リファレンス <http://semooh.jp/jquery/>




     上のページ、初学者にはすごくオススメなのだけど、更新が2年も止まっているため、ある程度のレベルのこと
     をするには微妙である。たとえば、後ほど説明する1.4.xから導入されたdelegateなども載っていない。
     バージョンごとに細かい仕様変更があることもあるが、そこでハマることはほとんどないと思われるので、常用
     には問題ないと思う。




Copyright (C) 2011 www.kawaz.org All Rights Reserved.        18
jQueryの命令
  命令(メソッド)は以下のように大別できる
   Attributes(属性、内容の操作)
   Traversing(要素の探索)
   Manipulation(要素の操作)
   CSS(CSSの操作)
   Events(イベントの操作)
   Effects(エフェクトを加える)
   Ajax(通信、ネットワーク周り)
   Utilities(その他もろもろ)




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   19
jQueryの命令
  命令(メソッド)は以下のように大別できる
   Attributes(属性、内容の操作)
   Traversing(要素の探索)
   Manipulation(要素の操作)
   CSS(CSSの操作)
   Events(イベントの操作)
   Effects(エフェクトを加える)
   Ajax(通信、ネットワーク周り)
   Utilities(その他もろもろ)


    今回は主に、デザイナさんが使うことの多い、太字についてメインに解
    説する。特にイベント周りを重点的に。
    筆者が、いろいろjQueryをいじり倒した上で、よく使うメソッドについ
    てのみ取り上げるので、その他については先ほどのページを読んでおい
    てほしい
Copyright (C) 2011 www.kawaz.org All Rights Reserved.   20
Attributes
  DOM要素の内容や属性を取得したり書き換えたり
  ちなみに属性(Attr)とは以下の太字の部分である
   <a href="http://www.kawaz.org/" title="Kawaz">Kawaz</a>

    // jQueryオブジェクト最初の要素の属性値を取り出す
    $('a').attr('href'); // http://www.kawaz.org
    $('a').attr('alt', 'Kawazポータル'); // 設定する
    // 一度に複数指定もできる
    $('a').attr({alt : 'Kawazポータル', target :
    '_blank'});

    // classをつけたり外したり
    $('a').addClass('link');
    $('a').removeClass('link');

    // 中身を取得、書き換える
    $('a').text(); // Kawaz
    $('a').text('Kawazポータル'); // 書き換える

Copyright (C) 2011 www.kawaz.org All Rights Reserved.        21
Traversing
 jQueryオブジェクトに含まれているDOM集合を選択したり、別のDOM
 を探索したり
 非常に種類があるが、基本的にこれぐらいしか使わない気がする
   書こうと思えばいくらでも複雑にできるが、これぐらいにとどめてお
   いた方が良いかも(後述)


        $('div').filter('.hoge'); // divの要素集合の中からクラス名が
        hogeのもののみ取り出す
        $('div').children(); // divの子要素全てを取り出す
        $('div').find('.piyo'); // divの子孫からクラス名がpiyoのもの
        を取り出す
        $('li').siblings(); // liの兄弟要素全てを返す
        $('div').closest(); // divの直近の親要素を取り出す




Copyright (C) 2011 www.kawaz.org All Rights Reserved.     22
シンプルイズベスト
Traversingや最初に説明したSelector、次のManipulationについても言え
ることだが、いろいろなメソッドを使って、複雑な探索やDOM操作をすべ
きではない(と個人的には思う)。理由として


        HTML構造が少しでも変わると利用できなくなる可能性がある
        コードの可読性が下がる
        実行パフォーマンスが(微々たるものだが)下がる


など、デメリットの方が多いため、使わなければいけない場合以外は使わな
い方が良い。
      自分でHTMLが書ける場合は、操作する要素にあらかじめクラス名をつけておくと、クラスセレクタだけで目的
      のDOMに到達できる
      複雑な操作や探索は、既存のページを(ブラウザ拡張などで)弄るなど、どうしてもHTMLを書き換えられな
      い状態で使うべき




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   23
Manipulation
   DOMを追加したり削除したり
     生成したDOMはappendなどで、すでに表示されているDOMに追加し
    ないと表示されない
     個人的にappend/prepend, before/after, wrap, empty, remove,
    cloneぐらいしか使わない気がする

var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
$('div').append($li); // 全てのdiv要素の一番下に挿入
$li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
var $newDiv = $('div.hoge').clone(); // hogeというクラスのdiv要素をコピー
$('div').before($newDiv); // 元々あったdivの前に挿入
$li.remove(); // でもやっぱり消す




 Copyright (C) 2011 www.kawaz.org All Rights Reserved.        24
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
              </div>




Copyright (C) 2011 www.kawaz.org All Rights Reserved.            25
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
                  <li>要素です!</li>
              </div>




Copyright (C) 2011 www.kawaz.org All Rights Reserved.            26
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
                  <ul>
                      <li>要素です!</li>
                  </ul>
              </div>




Copyright (C) 2011 www.kawaz.org All Rights Reserved.            27
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
                  <ul>
                      <li>要素です!</li>
                  </ul>
              </div>




Copyright (C) 2011 www.kawaz.org All Rights Reserved.            28
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
                  <ul>
                      <li>要素です!</li>
                  </ul>
              </div>
              <div>
                  <ul>
                      <li>要素です!</li>
                  </ul>
              </div>
Copyright (C) 2011 www.kawaz.org All Rights Reserved.            29
Manipulation
  DOMを追加したり削除したり
    生成したDOMはappendなどで、すでに表示されているDOMに追加し
   ないと表示されない
    個人的にappend/prepend, before/after, wrap, empty, remove,
   cloneぐらいしか使わない気がする
              var $li = $('<li>').text("要素です!"); // 新しく要素を生成して
              $('div').append($li); // 全てのdiv要素の一番下に挿入
              $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul>
              var $newDiv = $('div').clone(); // div要素をコピー
              $('div').before($newDiv); // 元々あったdivの前に挿入
              $li.remove(); // でもやっぱり消す
              <div>
                  <ul>
                      <li>要素です!</li>
                  </ul>
              </div>
              <div>
                  <ul>
                  </ul>
              </div>


Copyright (C) 2011 www.kawaz.org All Rights Reserved.            30
CSS
   文字通り、要素のCSS、見た目の操作
    特に、横幅縦幅やスクロール位置を動的に取得できるのが便利!
    一番直感的に理解しやすいので詳しい解説は不要かと




$('div').css('background'); // 背景色を取得
$('div').css('background', 'blue'); // 背景色を青に
$('div').width(); // 横幅を取り出す
$('div').width(100); // 横幅を100に変更
$('div').position(); // top, leftの値を親要素基準で取得
$('div').css('margin-left', '+=10'); // margin-leftを現在の値+10する




 Copyright (C) 2011 www.kawaz.org All Rights Reserved.          31
Effects
 DOM要素を動かしたり、フェードアウトしたりが簡単にできる
   個人的にjQueryを初めて覚えて、一番感激した機能。最初に学ぶと簡
   単にかっこいい物が作れてモチベーションが上がると思う
 EaseAnimation(だんだん遅くなったりとか早くなったりとか)も使え
 る
 コードサンプルよりデモを見たほうが楽しい
   http://semooh.jp/jquery/api/effects/




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   32
Events
  DOM要素にイベントを追加する
   jQueryのキモだと思う
   JavaScriptは基本的にイベントドリブン(イベント駆動)で開発して
   いくため
     イベントドリブン:○○が起こったとき、△△する、という処理を
     ひたすら書いていく
       あるボタンがクリックされたとき
       あるテキストフィールドに文字が入力されたとき
       エンターキーが押されたとき
       アニメーションが終わったとき
       通信が終わったとき




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   33
Events
  基本は$.bind()
    $('a').bind('mouseover', function(e){
        alert("マウスが乗りました");
    });

       このコードが走った時、hoverされたときに実行する動作を予約する。
         このコードが走った時点で処理が発生するわけではないので注意!
       引数に渡す関数オブジェクトをcallbackと呼んだりする
       bindでイベントを束縛すると、実行時点でセレクタにマッチする要素
      でしかイベントが発生しないので注意!
         たとえば、bindを行った後に新たなa要素を生成して、appendした
        としても、そこではイベントは実行されない
       ちなみに、最初から定義されている動作を殺すにはcallback内で
      return falseしてやる。(aタグをクリックしてもリンクしないように
      するなど)

Copyright (C) 2011 www.kawaz.org All Rights Reserved.   34
Events
  よく使うイベント
   click, hover, change, focus, keydown, submitなど
  ちなみに以下のようなショートカットも利用できる
   前のページに書いた物と全く同じ動作をする

     $('a').mouseover(function(e){
         alert("マウスが乗りました");
     });


  bindの他
    一度だけ実行して、以降はイベントを実行しないone
    後から追加された要素に対してもイベントを紐づけるdelegate
    などがある
            liveというのも存在するが、delegateに似ているので、基本的にほぼ使わない




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   35
Ajax
  Ajax = Asynchronous JavaScript + XML
    一昔前(2006年頃)にメチャクチャ流行った
    要はJSで外部と通信して、ページ遷移なしにページを書き換える仕組
   み全般のこと
    こんな名前だけどXMLはオワコンな気がする。最近はJSONを使うこ
   とが多い。
    近年は当たり前になってきたので改まってこういう言い方をすること
   は少なくなったが、名残として残っている
    jQueryではpostやgetなどhttp通信周りが扱える。デザイナが使うこ
   とはあまりなく、コード例は省略するが、例題3で利用している。
    個人的にはloadが便利すぎて生きるのが辛い
      Kawazポータルのかわずったーもっと読む機能とか




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   36
例題
 個人的にプログラミングは「習うより慣れろ」だと思っているので、とに
 かく例題にチャレンジしてみるのがKawaz流。
  テンプレートを今からKawazポータルにうpするので、それを書き換
  える感じで挑戦してみてほしい




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   37
例題1
  クリックすると適当なDOM要素をページに追加するボタンを作ろう
   クリックする度、要素が増えるね
   使うと簡単に作れるメソッド例
    click
    append
   余裕があればfadeInやtoggleなどでEffectsをつけてみるとテンション
   上がってくる




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   38
例題2
 あらかじめ用意されているdiv要素にhoverしている間だけ色を変え、マ
 ウスを離したら元に戻すようにしてみよう
  使うと簡単に作れるメソッド例
   hover
   css
  元の色を直接ソースに書き込まずに、色を変える前に元の色を保存して
  おいて、離したときに戻すというアプローチが取れると良いと思う




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   39
例題3
 テキストフィールドにTwitterのIDを入力して、ボタンを押すと、そのID
 のユーザーのつぶやきを読み込み、ページに追加してみましょう
  使うと簡単に作れるメソッド例
    click
    val
    get
    each
    append
  Twitter APIの取得部分のみ、サンプルプログラムに用意されているの
  で、それを読みながら改変してみよう
  余裕があれば、ボタンを押してから読み込みが終わるまでの間のみ
  「読み込み中」の表示ができると尚良いです




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   40
コーディングの際に
  コンソールの使い方を覚える
   普通のブラウザ(Chrome, Safari, Opera)で利用可能
   FirefoxはFirebugを導入すれば利用可能
   普通じゃないブラウザでは利用できない
   文法エラーや記述ミスで実行が止まってしまった場合は怒ってくれるた
   め、困ったら見てみるのが良いと思う。
   また、console.logによるプリントデバッグも有効




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   41
スコープについて
 JavaScriptはスコープがやっかい。特にthisの扱い
 jQueryは性質上、コールバックを多用するので、thisのスコープには気を
 つけた方が良い


          $('div').bind('click', function(){
              this.find('li').fadeTo('normal', 0.5, function(){
                  this.text("半透明になった!");
                    });
                    this.text("押された!!!");
          });

  コールバック中のthisは、呼び出し元のjQueryオブジェクトを参照する
  これを理解していないとハマるので注意




Copyright (C) 2011 www.kawaz.org All Rights Reserved.             42
jQueryプラグインとは
  jQueryプラグインとは
    jQueryはjQueryオブジェクトの命令を独自に拡張できる
    jQueryプラグイン=拡張された命令を提供するもの
    設定などが豊富に用意されていて、どの場合にも対応できるように汎化
    されているプラグインが良いプラグイン


 作り方は要望があれば解説しますが、汎用的に作るには結構な技術力が
 必要です。




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   43
jQuery UIとは
  おそらく最も有名なjQueryプラグイン
   Web上でドラッグやリサイズ、複数選択など、普通に実装するにはク
   ソ面倒なインターフェースを超簡単に実装できるようにするプラグイン
   カスタマイズ性が高く、汎用的に使える
   デモを見てみるのが良いと思う
   http://jqueryui.com/




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   44
基本的なプラグインの使い方
  大体のプラグインはほぼ同じ使い方でこうやって使える
   逆にこの方法で使えないプラグインはクソプラグインの可能性が高いの
   で、使用を再考した方が良い $(function() {
                                                              $( "#draggable" ).draggable({
                                                                  axis : 'x',
                                                                  opacity : 0.5,
                                                                  zIndex : 999
                                                              });
                                                        });
      基本的に使いたい要素に対して追加した動作を呼び出し、必要に応じ
      て、連想配列で設定を渡してあげる
       当たり前だが設定はものによって項目が違うのでドキュメント参照
       どんな順番で書いても動くが、アルファベット順に設定を書くと綺
       麗だと思う
      当たり前だが、プラグインをheadで読み込ませないといけない。
       jQueryの後、自分で書くコードの前に読み込ませること

Copyright (C) 2011 www.kawaz.org All Rights Reserved.                                         45
ご静聴ありがとうございました!




Copyright (C) 2011 www.kawaz.org All Rights Reserved.   46

Contenu connexe

Tendances

WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。Yossy Taka
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1Makoto Haruyama
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門Toshiaki Maki
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1daisuke shimizu
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめYuki Ishikawa
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリYukiya Nakagawa
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門Atsushi Tadokoro
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介しくみ製作所
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamentalTakuya Kumagai
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web applicationYusuke Wada
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScripteiji sekiya
 
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介schoowebcampus
 
JavaScript Basic 01
JavaScript Basic 01JavaScript Basic 01
JavaScript Basic 01Yossy Taka
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1Nishida Kansuke
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介Yuki Fujisawa
 

Tendances (20)

Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
No3
No3No3
No3
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web application
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScript
 
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
 
JavaScript Basic 01
JavaScript Basic 01JavaScript Basic 01
JavaScript Basic 01
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
 

En vedette

jQueryを中心としたJavaScript
jQueryを中心としたJavaScriptjQueryを中心としたJavaScript
jQueryを中心としたJavaScripthideaki honda
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理Kiyoshi Sawada
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するKiyoshi Sawada
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するKiyoshi Sawada
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるKiyoshi Sawada
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップKiyoshi Sawada
 
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Yuki Yokoyama
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するKiyoshi Sawada
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみたyusuke ueki
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)parrotstudio
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるKiyoshi Sawada
 
少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発Atsuhiko Kimura
 
jQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリjQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリTakashi Uemura
 
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編Kazumich YAMAMOTO
 
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろうMitsuo Kawashima
 

En vedette (20)

Learning jQuery
Learning jQueryLearning jQuery
Learning jQuery
 
jQueryを中心としたJavaScript
jQueryを中心としたJavaScriptjQueryを中心としたJavaScript
jQueryを中心としたJavaScript
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
漢は黙ってjQuery
漢は黙ってjQuery漢は黙ってjQuery
漢は黙ってjQuery
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
 
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
 
少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発
 
jQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリjQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリ
 
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
 
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
 

Similaire à Kawaz的jQuery入門

WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうHishikawa Takuro
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMiho Nakano
 
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかJ qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかHisashi Aruji
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会Rin Yano
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)Ryuma Tsukano
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方Yuki Takahashi
 
DOM Scripting & jQuery
DOM Scripting & jQueryDOM Scripting & jQuery
DOM Scripting & jQuerysmallworkshop
 
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php - BREN
 

Similaire à Kawaz的jQuery入門 (20)

OSC京都2011
OSC京都2011OSC京都2011
OSC京都2011
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかJ qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
WordPressとjQuery
WordPressとjQueryWordPressとjQuery
WordPressとjQuery
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 
DOM Scripting & jQuery
DOM Scripting & jQueryDOM Scripting & jQuery
DOM Scripting & jQuery
 
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
 

Plus de Kohki Miki

watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話Kohki Miki
 
cocos2d-consoleでパッケージ管理
cocos2d-consoleでパッケージ管理cocos2d-consoleでパッケージ管理
cocos2d-consoleでパッケージ管理Kohki Miki
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発Kohki Miki
 
ゲームコミュニティサミット2014に参加してきた話
ゲームコミュニティサミット2014に参加してきた話ゲームコミュニティサミット2014に参加してきた話
ゲームコミュニティサミット2014に参加してきた話Kohki Miki
 
ゲームコミュニティサミット2014「*いどのなかにいる*」
ゲームコミュニティサミット2014「*いどのなかにいる*」ゲームコミュニティサミット2014「*いどのなかにいる*」
ゲームコミュニティサミット2014「*いどのなかにいる*」Kohki Miki
 
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」Kohki Miki
 
Kawaz Hipchat超入門
Kawaz Hipchat超入門Kawaz Hipchat超入門
Kawaz Hipchat超入門Kohki Miki
 
Kawaz Third Impact
Kawaz Third ImpactKawaz Third Impact
Kawaz Third ImpactKohki Miki
 
Decksetがよかった話
Decksetがよかった話Decksetがよかった話
Decksetがよかった話Kohki Miki
 
Unite Japanに参加してきた話
Unite Japanに参加してきた話Unite Japanに参加してきた話
Unite Japanに参加してきた話Kohki Miki
 
nomad-cliの紹介
nomad-cliの紹介nomad-cliの紹介
nomad-cliの紹介Kohki Miki
 
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門Kohki Miki
 
VOXCHRONICLE企画草案
VOXCHRONICLE企画草案VOXCHRONICLE企画草案
VOXCHRONICLE企画草案Kohki Miki
 
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライドKohki Miki
 
Kobold2Dで始めるゲーム開発
Kobold2Dで始めるゲーム開発Kobold2Dで始めるゲーム開発
Kobold2Dで始めるゲーム開発Kohki Miki
 
【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDDKohki Miki
 
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」について
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」についてはてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」について
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」についてKohki Miki
 
はてなインターンシップ2011、ワークショップ発表プレゼン
はてなインターンシップ2011、ワークショップ発表プレゼンはてなインターンシップ2011、ワークショップ発表プレゼン
はてなインターンシップ2011、ワークショップ発表プレゼンKohki Miki
 
cocos2で始める iPhoneゲーム開発入門
cocos2で始める iPhoneゲーム開発入門cocos2で始める iPhoneゲーム開発入門
cocos2で始める iPhoneゲーム開発入門Kohki Miki
 

Plus de Kohki Miki (20)

watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話
 
cocos2d-consoleでパッケージ管理
cocos2d-consoleでパッケージ管理cocos2d-consoleでパッケージ管理
cocos2d-consoleでパッケージ管理
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
ゲームコミュニティサミット2014に参加してきた話
ゲームコミュニティサミット2014に参加してきた話ゲームコミュニティサミット2014に参加してきた話
ゲームコミュニティサミット2014に参加してきた話
 
ゲームコミュニティサミット2014「*いどのなかにいる*」
ゲームコミュニティサミット2014「*いどのなかにいる*」ゲームコミュニティサミット2014「*いどのなかにいる*」
ゲームコミュニティサミット2014「*いどのなかにいる*」
 
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」
札幌ゲーム製作者コミュニティKawaz「いどのなかにいる」
 
Kawaz Hipchat超入門
Kawaz Hipchat超入門Kawaz Hipchat超入門
Kawaz Hipchat超入門
 
Kawaz Third Impact
Kawaz Third ImpactKawaz Third Impact
Kawaz Third Impact
 
Decksetがよかった話
Decksetがよかった話Decksetがよかった話
Decksetがよかった話
 
Unite Japanに参加してきた話
Unite Japanに参加してきた話Unite Japanに参加してきた話
Unite Japanに参加してきた話
 
nomad-cliの紹介
nomad-cliの紹介nomad-cliの紹介
nomad-cliの紹介
 
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
 
VOXCHRONICLE企画草案
VOXCHRONICLE企画草案VOXCHRONICLE企画草案
VOXCHRONICLE企画草案
 
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド
〜ゲーム制作を始めてみよう〜 Kawaz入会希望者向けスライド
 
Kobold2Dで始めるゲーム開発
Kobold2Dで始めるゲーム開発Kobold2Dで始めるゲーム開発
Kobold2Dで始めるゲーム開発
 
【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD
 
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」について
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」についてはてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」について
はてな技術勉強会 #4LT「札幌ゲーム制作者コミュニティKawaz」について
 
はてなインターンシップ2011、ワークショップ発表プレゼン
はてなインターンシップ2011、ワークショップ発表プレゼンはてなインターンシップ2011、ワークショップ発表プレゼン
はてなインターンシップ2011、ワークショップ発表プレゼン
 
cocos2で始める iPhoneゲーム開発入門
cocos2で始める iPhoneゲーム開発入門cocos2で始める iPhoneゲーム開発入門
cocos2で始める iPhoneゲーム開発入門
 
PyGame入門
PyGame入門PyGame入門
PyGame入門
 

Kawaz的jQuery入門

  • 1. Kawaz的jQuery入門 第1回 Kawaz Web勉強会 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 1
  • 2. このセッションについて 目標 普段プログラムを書かない人が jQueryのコアな動作を理解する jQueryで簡単なものを作ってどや顔できるようになる Web上にあるプラグインを使えるようになる 参考資料 詳しく作るのが面倒だったので、以下のスライドを読んでください このスライドを見て、気になった部分、説明が足りない部分を補足して いく感じです ノンプログラマーのためのjQuery入門 http://www.slideshare.net/hayatomizuno/jquery-7665168 バージョンについて 最新版は1.7.1(12/1/6現在)ですが、イベント周りの仕様が若干変わっ ているため、1.6.4基準でお話しします Copyright (C) 2011 www.kawaz.org All Rights Reserved. 2
  • 3. jQueryってなに? JavaScript向けライブラリ 少ないコード量でパワフルな実装が可能 今のWeb界隈では必須技術(giginet調べ) 無料 オープンソース 改変・再配布・商用利用可能(MIT) バージョンアップが早い 拡張が豊富(jQueryプラグイン) Copyright (C) 2011 www.kawaz.org All Rights Reserved. 3
  • 4. 下準備 headにjQueryを読み込ませよう <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/ 1.6.4/jquery.min.js"></script> <script type="text/javascript" src="jquery.hello.js"></script> <title>Hello, jQuery</title> </head> <body> </body> </html> 自分で公式サイトからファイルをダウンロードしてきて、読み込ませても 良いですが、以下のサイトからGoogleがホスティングしているものに直 リンクするのがオススメです。楽だし http://scriptsrc.net/ ※jQueryの宣言は、自分のコードを読み込ませるより前に行ってくださ い Copyright (C) 2011 www.kawaz.org All Rights Reserved. 4
  • 5. jQueryを書いてみよう $(function(){ $('body').append('Hello, jQuery!'); }); わずかこれだけ! 先ほどのHTMLファイルを開いて、Hello, jQueryとだけ表示されていれ ば成功です! Copyright (C) 2011 www.kawaz.org All Rights Reserved. 5
  • 6. jQuery超入門 $('.kawaz').css('background', 'red'); Copyright (C) 2011 www.kawaz.org All Rights Reserved. 6
  • 7. jQuery超入門 $('.kawaz').css('background', 'red'); jQueryオブジェクト(主体) メソッド(命令) jQueryオブジェクト(主体).メソッド(命令)で構成されている! 上の例の場合、classがkawazの要素の背景色を赤くする Copyright (C) 2011 www.kawaz.org All Rights Reserved. 7
  • 8. jQuery超入門 $('.kawaz').css('background', 'red'); jQueryオブジェクト(主体) メソッド(命令) jQueryオブジェクト(主体).メソッド(命令)で構成されている! 上の例の場合、classがkawazの要素の背景色を赤くする 基本的に、jQueryコーディングは 操作したい要素の選択、探索 その要素に対してどのような操作をするか 2つに帰結する! Copyright (C) 2011 www.kawaz.org All Rights Reserved. 8
  • 9. DOMってなに? DOM = Document Object Model HTML上にある要素をプログラムで扱いやすく定めたもの Copyright (C) 2011 www.kawaz.org All Rights Reserved. 9
  • 10. DOMってなに? 超基本:HTMLは木構造になっている HTML HEAD TITLE くだものいちらん BODY UL LI りんご LI バナナ LI みかん Copyright (C) 2011 www.kawaz.org All Rights Reserved. 10
  • 11. DOMってなに? 超基本:HTMLは木構造になっている HTML HEAD TITLE くだものいちらん BODY UL LI りんご DOMノード LI バナナ LI みかん Copyright (C) 2011 www.kawaz.org All Rights Reserved. 11
  • 12. DOMってなに? 超基本:HTMLは木構造になっている HTML HEAD TITLE くだものいちらん BODY UL LI りんご DOMノード LI バナナ LI みかん 各ノードは入れ子の構造になっている LIの各ノードから見てULは親ノード、BODYより上は先祖ノードと 言ったりする 子ノード、子孫ノード、兄弟ノードといった言い方もする いとこノードとかはとこノードという言い方は聞いたことがな い…… Copyright (C) 2011 www.kawaz.org All Rights Reserved. 12
  • 13. jQueryオブジェクトとは jQueryオブジェクトとは、DOMノードの集合に対して一定の操作を行 えるようにしたもの jQueryオブジェクトを生成するには$関数を使う(ダラー関数とか読む) $関数は引数によって、既存のノードを取ってきたり、新しいノードを生 成したり、かなり柔軟にjQueryオブジェクトを生成してくれる ちなみに $()はjQuery()という関数の別名である jQueryを他のライブラリ(prototype.js)などと一緒に使うときは$が競合してしまうことがあるため、$()では なく、jQuery()を使った方が良いとされているが、現状、併せて使うことがほとんどないため、気にしなくて良 い気がする Copyright (C) 2011 www.kawaz.org All Rights Reserved. 13
  • 14. $関数の使い方1 既存のDOM要素を選択する CSSセレクタのようなものを引数に渡す CSSセレクタに独自の拡張がされていたり、CSSセレクタに似せて実装されている別物なので「ようなもの」と表記 ドキュメント上から、これらにマッチするDOM要素全てを含んだ jQueryオブジェクトを生成する // 全てのp要素 $('p'); // kawazをclassに持つ要素 $('.kawaz'); // contentをidに持つ要素の直下にあるリスト要素 $('#content > li'); // リンク先がhttp://www.kawaz.orgから始まるa要素 $('a[href^="http://www.kawaz.org"]'); // 各親要素に対して3n+1(1, 4, 7…)番目にあるリスト要素 $('li:nth-child(3n+1)'); // 選択状態にあるテキストフィールド $('input[type="text"]:selected'); Copyright (C) 2011 www.kawaz.org All Rights Reserved. 14
  • 15. $関数の使い方2 新しいDOM要素を生成する タグやHTMLをそのまま文字列で引数として渡す 新しいDOM要素が生成され、それを含んだjQueryオブジェクトが生成 される // 空のp要素を生成する $('<p>'); // 文章を含んだp要素を生成する $('<p>おなかすいた</p>'); // 入れ子にもできる $('<p><b>ねむたい!!!!</b></p>'); 他にも、DOM要素をオブジェクトとして直接渡したり、配列など別のオブジェクトを渡してjQueryオブジェクトを生 成することができるが、割愛する。 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 15
  • 16. jQueryオブジェクトと変数 jQueryオブジェクトは普通の変数に格納できる どんな名前の変数に格納することでもできるが、$から始まる変数名の 変数に格納することを強くオススメする var $hoge = $('.hoge'); // いい var hoge = $('.hoge'); // 問題なく動くけど避けるべき これはルールではなくマナー、お作法 jQueryを書く人の間では「$から始まる変数にはjQueryオブジェクトが 格納されている」という暗黙の了解がある 当たり前だが、逆にほかのオブジェクトを$から始まる変数に入れないでください jQueryに限らず、他の人を思いやって書けるプログラマは良いプログラ マです Copyright (C) 2011 www.kawaz.org All Rights Reserved. 16
  • 17. $(function(){}); jQueryを書き始める前に毎回これで囲んで書くことを強く推奨! $(function(){ }); 理由1:遅延実行させるため これに囲むと、確実にHTMLの描画が終わってから実行される 囲まないと、HTMLの描画前に実行されるかもしれない DOMノードが生成される前にセレクタを使うと取得できない 初心者が一番ハマるところだとおもう 理由2:名前空間を分離させるため 他のスクリプト、ブラウザ拡張、コンソールなどにより、中の状態を 書き換えられることを防ぐことができる もちろん、プラグインを作るなど、囲んではいけない場合も存在するが、それは理解してきてからで良いと思う Copyright (C) 2011 www.kawaz.org All Rights Reserved. 17
  • 18. jQueryの基本はこれだけ! いままで説明したところで、「操作したい要素の選択・探索」は大体マス ターしました。 あとは「命令」を覚えていくだけ! 基本的な命令だけ押さえておけばOK 残りは以下のページに「命令のカタログ」的なものがあるので、 ボーッと眺めて「こんなのあるんだー」と思っておけば完璧 jQuery 日本語リファレンス <http://semooh.jp/jquery/> 上のページ、初学者にはすごくオススメなのだけど、更新が2年も止まっているため、ある程度のレベルのこと をするには微妙である。たとえば、後ほど説明する1.4.xから導入されたdelegateなども載っていない。 バージョンごとに細かい仕様変更があることもあるが、そこでハマることはほとんどないと思われるので、常用 には問題ないと思う。 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 18
  • 19. jQueryの命令 命令(メソッド)は以下のように大別できる Attributes(属性、内容の操作) Traversing(要素の探索) Manipulation(要素の操作) CSS(CSSの操作) Events(イベントの操作) Effects(エフェクトを加える) Ajax(通信、ネットワーク周り) Utilities(その他もろもろ) Copyright (C) 2011 www.kawaz.org All Rights Reserved. 19
  • 20. jQueryの命令 命令(メソッド)は以下のように大別できる Attributes(属性、内容の操作) Traversing(要素の探索) Manipulation(要素の操作) CSS(CSSの操作) Events(イベントの操作) Effects(エフェクトを加える) Ajax(通信、ネットワーク周り) Utilities(その他もろもろ) 今回は主に、デザイナさんが使うことの多い、太字についてメインに解 説する。特にイベント周りを重点的に。 筆者が、いろいろjQueryをいじり倒した上で、よく使うメソッドについ てのみ取り上げるので、その他については先ほどのページを読んでおい てほしい Copyright (C) 2011 www.kawaz.org All Rights Reserved. 20
  • 21. Attributes DOM要素の内容や属性を取得したり書き換えたり ちなみに属性(Attr)とは以下の太字の部分である <a href="http://www.kawaz.org/" title="Kawaz">Kawaz</a> // jQueryオブジェクト最初の要素の属性値を取り出す $('a').attr('href'); // http://www.kawaz.org $('a').attr('alt', 'Kawazポータル'); // 設定する // 一度に複数指定もできる $('a').attr({alt : 'Kawazポータル', target : '_blank'}); // classをつけたり外したり $('a').addClass('link'); $('a').removeClass('link'); // 中身を取得、書き換える $('a').text(); // Kawaz $('a').text('Kawazポータル'); // 書き換える Copyright (C) 2011 www.kawaz.org All Rights Reserved. 21
  • 22. Traversing jQueryオブジェクトに含まれているDOM集合を選択したり、別のDOM を探索したり 非常に種類があるが、基本的にこれぐらいしか使わない気がする 書こうと思えばいくらでも複雑にできるが、これぐらいにとどめてお いた方が良いかも(後述) $('div').filter('.hoge'); // divの要素集合の中からクラス名が hogeのもののみ取り出す $('div').children(); // divの子要素全てを取り出す $('div').find('.piyo'); // divの子孫からクラス名がpiyoのもの を取り出す $('li').siblings(); // liの兄弟要素全てを返す $('div').closest(); // divの直近の親要素を取り出す Copyright (C) 2011 www.kawaz.org All Rights Reserved. 22
  • 23. シンプルイズベスト Traversingや最初に説明したSelector、次のManipulationについても言え ることだが、いろいろなメソッドを使って、複雑な探索やDOM操作をすべ きではない(と個人的には思う)。理由として HTML構造が少しでも変わると利用できなくなる可能性がある コードの可読性が下がる 実行パフォーマンスが(微々たるものだが)下がる など、デメリットの方が多いため、使わなければいけない場合以外は使わな い方が良い。 自分でHTMLが書ける場合は、操作する要素にあらかじめクラス名をつけておくと、クラスセレクタだけで目的 のDOMに到達できる 複雑な操作や探索は、既存のページを(ブラウザ拡張などで)弄るなど、どうしてもHTMLを書き換えられな い状態で使うべき Copyright (C) 2011 www.kawaz.org All Rights Reserved. 23
  • 24. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div.hoge').clone(); // hogeというクラスのdiv要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す Copyright (C) 2011 www.kawaz.org All Rights Reserved. 24
  • 25. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 25
  • 26. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> <li>要素です!</li> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 26
  • 27. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> <ul> <li>要素です!</li> </ul> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 27
  • 28. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> <ul> <li>要素です!</li> </ul> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 28
  • 29. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> <ul> <li>要素です!</li> </ul> </div> <div> <ul> <li>要素です!</li> </ul> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 29
  • 30. Manipulation DOMを追加したり削除したり 生成したDOMはappendなどで、すでに表示されているDOMに追加し ないと表示されない 個人的にappend/prepend, before/after, wrap, empty, remove, cloneぐらいしか使わない気がする var $li = $('<li>').text("要素です!"); // 新しく要素を生成して $('div').append($li); // 全てのdiv要素の一番下に挿入 $li.wrap('ul') // さらに要素で囲む<ul><li></li></ul> var $newDiv = $('div').clone(); // div要素をコピー $('div').before($newDiv); // 元々あったdivの前に挿入 $li.remove(); // でもやっぱり消す <div> <ul> <li>要素です!</li> </ul> </div> <div> <ul> </ul> </div> Copyright (C) 2011 www.kawaz.org All Rights Reserved. 30
  • 31. CSS 文字通り、要素のCSS、見た目の操作 特に、横幅縦幅やスクロール位置を動的に取得できるのが便利! 一番直感的に理解しやすいので詳しい解説は不要かと $('div').css('background'); // 背景色を取得 $('div').css('background', 'blue'); // 背景色を青に $('div').width(); // 横幅を取り出す $('div').width(100); // 横幅を100に変更 $('div').position(); // top, leftの値を親要素基準で取得 $('div').css('margin-left', '+=10'); // margin-leftを現在の値+10する Copyright (C) 2011 www.kawaz.org All Rights Reserved. 31
  • 32. Effects DOM要素を動かしたり、フェードアウトしたりが簡単にできる 個人的にjQueryを初めて覚えて、一番感激した機能。最初に学ぶと簡 単にかっこいい物が作れてモチベーションが上がると思う EaseAnimation(だんだん遅くなったりとか早くなったりとか)も使え る コードサンプルよりデモを見たほうが楽しい http://semooh.jp/jquery/api/effects/ Copyright (C) 2011 www.kawaz.org All Rights Reserved. 32
  • 33. Events DOM要素にイベントを追加する jQueryのキモだと思う JavaScriptは基本的にイベントドリブン(イベント駆動)で開発して いくため イベントドリブン:○○が起こったとき、△△する、という処理を ひたすら書いていく あるボタンがクリックされたとき あるテキストフィールドに文字が入力されたとき エンターキーが押されたとき アニメーションが終わったとき 通信が終わったとき Copyright (C) 2011 www.kawaz.org All Rights Reserved. 33
  • 34. Events 基本は$.bind() $('a').bind('mouseover', function(e){ alert("マウスが乗りました"); }); このコードが走った時、hoverされたときに実行する動作を予約する。 このコードが走った時点で処理が発生するわけではないので注意! 引数に渡す関数オブジェクトをcallbackと呼んだりする bindでイベントを束縛すると、実行時点でセレクタにマッチする要素 でしかイベントが発生しないので注意! たとえば、bindを行った後に新たなa要素を生成して、appendした としても、そこではイベントは実行されない ちなみに、最初から定義されている動作を殺すにはcallback内で return falseしてやる。(aタグをクリックしてもリンクしないように するなど) Copyright (C) 2011 www.kawaz.org All Rights Reserved. 34
  • 35. Events よく使うイベント click, hover, change, focus, keydown, submitなど ちなみに以下のようなショートカットも利用できる 前のページに書いた物と全く同じ動作をする $('a').mouseover(function(e){ alert("マウスが乗りました"); }); bindの他 一度だけ実行して、以降はイベントを実行しないone 後から追加された要素に対してもイベントを紐づけるdelegate などがある liveというのも存在するが、delegateに似ているので、基本的にほぼ使わない Copyright (C) 2011 www.kawaz.org All Rights Reserved. 35
  • 36. Ajax Ajax = Asynchronous JavaScript + XML 一昔前(2006年頃)にメチャクチャ流行った 要はJSで外部と通信して、ページ遷移なしにページを書き換える仕組 み全般のこと こんな名前だけどXMLはオワコンな気がする。最近はJSONを使うこ とが多い。 近年は当たり前になってきたので改まってこういう言い方をすること は少なくなったが、名残として残っている jQueryではpostやgetなどhttp通信周りが扱える。デザイナが使うこ とはあまりなく、コード例は省略するが、例題3で利用している。 個人的にはloadが便利すぎて生きるのが辛い Kawazポータルのかわずったーもっと読む機能とか Copyright (C) 2011 www.kawaz.org All Rights Reserved. 36
  • 37. 例題 個人的にプログラミングは「習うより慣れろ」だと思っているので、とに かく例題にチャレンジしてみるのがKawaz流。 テンプレートを今からKawazポータルにうpするので、それを書き換 える感じで挑戦してみてほしい Copyright (C) 2011 www.kawaz.org All Rights Reserved. 37
  • 38. 例題1 クリックすると適当なDOM要素をページに追加するボタンを作ろう クリックする度、要素が増えるね 使うと簡単に作れるメソッド例 click append 余裕があればfadeInやtoggleなどでEffectsをつけてみるとテンション 上がってくる Copyright (C) 2011 www.kawaz.org All Rights Reserved. 38
  • 39. 例題2 あらかじめ用意されているdiv要素にhoverしている間だけ色を変え、マ ウスを離したら元に戻すようにしてみよう 使うと簡単に作れるメソッド例 hover css 元の色を直接ソースに書き込まずに、色を変える前に元の色を保存して おいて、離したときに戻すというアプローチが取れると良いと思う Copyright (C) 2011 www.kawaz.org All Rights Reserved. 39
  • 40. 例題3 テキストフィールドにTwitterのIDを入力して、ボタンを押すと、そのID のユーザーのつぶやきを読み込み、ページに追加してみましょう 使うと簡単に作れるメソッド例 click val get each append Twitter APIの取得部分のみ、サンプルプログラムに用意されているの で、それを読みながら改変してみよう 余裕があれば、ボタンを押してから読み込みが終わるまでの間のみ 「読み込み中」の表示ができると尚良いです Copyright (C) 2011 www.kawaz.org All Rights Reserved. 40
  • 41. コーディングの際に コンソールの使い方を覚える 普通のブラウザ(Chrome, Safari, Opera)で利用可能 FirefoxはFirebugを導入すれば利用可能 普通じゃないブラウザでは利用できない 文法エラーや記述ミスで実行が止まってしまった場合は怒ってくれるた め、困ったら見てみるのが良いと思う。 また、console.logによるプリントデバッグも有効 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 41
  • 42. スコープについて JavaScriptはスコープがやっかい。特にthisの扱い jQueryは性質上、コールバックを多用するので、thisのスコープには気を つけた方が良い $('div').bind('click', function(){ this.find('li').fadeTo('normal', 0.5, function(){ this.text("半透明になった!"); }); this.text("押された!!!"); }); コールバック中のthisは、呼び出し元のjQueryオブジェクトを参照する これを理解していないとハマるので注意 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 42
  • 43. jQueryプラグインとは jQueryプラグインとは jQueryはjQueryオブジェクトの命令を独自に拡張できる jQueryプラグイン=拡張された命令を提供するもの 設定などが豊富に用意されていて、どの場合にも対応できるように汎化 されているプラグインが良いプラグイン 作り方は要望があれば解説しますが、汎用的に作るには結構な技術力が 必要です。 Copyright (C) 2011 www.kawaz.org All Rights Reserved. 43
  • 44. jQuery UIとは おそらく最も有名なjQueryプラグイン Web上でドラッグやリサイズ、複数選択など、普通に実装するにはク ソ面倒なインターフェースを超簡単に実装できるようにするプラグイン カスタマイズ性が高く、汎用的に使える デモを見てみるのが良いと思う http://jqueryui.com/ Copyright (C) 2011 www.kawaz.org All Rights Reserved. 44
  • 45. 基本的なプラグインの使い方 大体のプラグインはほぼ同じ使い方でこうやって使える 逆にこの方法で使えないプラグインはクソプラグインの可能性が高いの で、使用を再考した方が良い $(function() { $( "#draggable" ).draggable({ axis : 'x', opacity : 0.5, zIndex : 999 }); }); 基本的に使いたい要素に対して追加した動作を呼び出し、必要に応じ て、連想配列で設定を渡してあげる 当たり前だが設定はものによって項目が違うのでドキュメント参照 どんな順番で書いても動くが、アルファベット順に設定を書くと綺 麗だと思う 当たり前だが、プラグインをheadで読み込ませないといけない。 jQueryの後、自分で書くコードの前に読み込ませること Copyright (C) 2011 www.kawaz.org All Rights Reserved. 45

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n