SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
introduction to
jQuery
Ryuma Tsukano
jsCafe7
目次
● 概要
● 今日のお題
● ready
● jQuery関数
● jQueryオブジェクト
● セレクタ
● 要素の作成
● 要素の追加/削除
● これからの進め方
今日の方向性
● jQueryの基本
● 関連するjs基礎知識も概説/振り返り
● なるべく手を動かす
○ chromeのコンソールか
○ FirefoxのFirebugの準備を。
○ jQuery公式ページで試します
jQuery
● javascriptのライブラリ
● 基本的な処理を簡易化
○ DOM操作
○ イベント
○ アニメーション
○ Ajax
● クロスブラウザ対応
○ ブラウザ毎の違いをそこまで意識しなくて良い
最近2が出た
IE8以下が正式に対応しなくなった
● 世の中的にも
○ XPサポートもうすぐ終了
○ vista自動upgradeでie9
jQueryの呼び出し
■CDN
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
GoogleやMSにも有り
■ダウンロード
<script src="./jquery-1.9.1-min.js"></script>
jQueryの呼び出し
$(document).ready(function(){
// ここにjQuery書く
});
上記のソースの中で、以下の順番で解説。
①$()
②document
③ready(function)
①$()
● $ は jQuery() の別名
○ = グローバル関数
● グローバル:どこからでも使える
○ page内のオブジェクトの一番上の親となる
windowオブジェクトに紐づいてる
● 関数:処理の固まりfunction(){ ... }
○ ファクトリ関数
■ (コンストラクタではないのでnewしない)
中身を見てみよう
これが正体
②document
html自体が入ってる
DOMオブジェクト(tree上要素の固まり)
荻さんの資料より
無断拝借
手を動かす
①$(element) = jQuery(element)
DOMオブジェクトを
jQueryオブジェクトに変換
○ ※公式pageで$を調べる時はjQueryで調べる
● jQueryオブジェクト
○ jQuery関数によって返されるオブジェクト
○ ドキュメント要素+jQueryメソッド
③ready(fn)
jQueryのメソッド
DOMロード後操作可能時、関数を実行
(コールバック関数)
● コールバック
○ 電話番号伝えて折り返し相手からかけなおして
もらう事(=callback)
○ あるイベント後に、任意の処理を実行
この処理の意味
①$(②document).③ready(④function(){
// ここにjQuery書く
});
①jQueryで取得した
②HTML全体のDOMが
③ロードされた時に、
④コールバック関数を実行
何故必要?
ブラウザは上からDOMを構築
● 例)HTML内
○ 上:jQueryの処理
○ 下:操作したいhtmlの要素
■ =>DOMが存在しない状態で、要素を取るとエラーに
なる
■ =>そこでコールバック指定しておく
■ (準備出来たら電話のかけ直しのイメージ)
jQueryの呼び出しの短縮系
$(document).ready(function(){
//ここに書く
}
■上記と同じ意味(短縮系)
$(function(){
//ここに書く
});
jQuery関数
色々指定可能。
1. jQuery(element)
a. 先程使った(①+②)。DOMから要素を取得。
2. jQuery(callback)
a. 今話した$(document).ready(③)の代わり。
3. jQuery(expression)
a. selectorを指定して要素を取得。
4. jQuery(html)
a. htmlを作れる。
jQueryのセレクター
$(expression)
● expression : css + original
● html上の任意の要素をjQueryオブジェクトと
して取得できる。
例)
<div id = "main">jscafe</div>
$('#main')
で、上記のタグを取得
試してみよう
$('#menu-top')
セレクタの種類
いっぱいある。
http://api.jquery.com/category/selectors/
今日は代表的な物
● 基本
● 関係
● 順番
基本的なexpression
● id : #
○ ex) $('#main')
● class : .
○ ex) $('.top-logo')
● tag : タグ名
○ ex) $('div')
● 属性 : [属性='値']
○ ex) $("[title='jQuery']")
○ 属性!=値で否定 / 属性^=値で始まるもの / 属
性$=値で終わるもの / 属性*=値で含みもの
関係を表すexpression
● 子(直下のタグ) : >
○ ex) $('ul > li')
● 子孫 : 空白
○ ex) $('div span')
● 隣接(次のタグ) : +
○ ex) $('header + h1')
● グループ: ,
○ ex) $('liked_button, comment_button')
順番
● 最初/最後: :first / :last
○ ex) $('li:first') / $('li:last')
● 奇数/偶数: :even / :odd
○ ex) $('li:even') / $('li:odd')
● 要素特定: :eq/:lt/:gt
○ equal(等しい)
○ less than(低い,未満)
○ greater than(高い,超過)
○ ex) $('li:eq(2)')
やってみよう
今までの組み合わせて
$('.menu > li:eq(3)')
とか
$("[title='jQuery']")
とかね
jQueryオブジェクト
基本的にマッチした複数の要素が入ってる
jQueryオブジェクト
≒配列
実際、配列ではない
配列について
jsの型の1つ
複数の値が入った固まり
値格納
x = ["yamada", "tanaka", "ito"]
値呼び出し
x[1]
=> "tanaka"
0
※0から
始まる
1 2
xという箱
jQueryオブジェクトと配列
jQueryオブジェクト≒配列
[index]で値を取得できる
● 0から始まるので、ご注意を
$(...).get(0)でも一緒
selectorで早く取得する方法
● idを指定した方が良い
○ jQueryの内部
■ id => getElementByIdで一発取得。
● ex) $(‘#main’)
■ 他 => getElementsByTagNameした後、js側で全部
check。なので、idより時間かかる。
● 止むを得ずid以外を使う時、タグを付けるとまだマシ(要素
が絞られるから)(場合によっては10倍早い)
● ex) $('div.main')
早く取得するために:cache
● 何度も呼び出す要素は変数に入れる
○ そうしないと、何度も同じ処理を繰り返す
$("#main").append('<h1>test</h1>')
$("#main").append('<div>abc</div>')
var main_tag = $("#main")
main_tag.append('<h1>test</h1>')
main_tag.append('<div>abc</div>')
早く取得するために:cache+find
要素.find(セレクタ)
○ 要素の下の要素を取得できる(要素絞れる)
$("#main").append('<h1>test</h1>')
$("#main").append('<div></div>')
$("#main > div").append("<a href='#'>test</a>")
var main_tag = $("#main")
main_tag.append('<h1>test</h1>')
main_tag.append('<div></div>')
main_tag.find('div').append("<a href='#'>test</a>")
早く取得するために:メソッドチェー
ン
変数に入れる代わりにチェーン状に繋げる事も
出来る。
● 改行等書き方を工夫しないと読み辛いの
で注意
$("#main").append('<h1>test</h1>').append('<div></div>').
find('div').append("<a href='#'>test</a>")
jQuery関数
色々指定可能。
1. jQuery(element)
a. 先程使った。DOMから要素を取得。
2. jQuery(callback)
a. $(document).readyの代わり。
3. jQuery(expression)
a. selectorを指定して要素を取得。
4. jQuery(html)
a. htmlを作れる。
要素を作成
ex)
$("<div id='test'>this is test</div>")
$(html)
html要素を作れる
違う書き方
ex)
var x = $("<div id='test'>this is test</div>")
var x = $("<div>",
{ id : "test",
text : "this is test"})
$(html, attributes)
属性をオブジェクトとして書ける
オブジェクトとは?
型の1つ。
複数のキーと値を持ったデータの固まり
例)
yamada = {};
yamada[age] = 28; //ブラケット記法
yamada.name = '山田'; //ドット記法
yamada = {age:28, name:'山田'}
ちなみに
htmlに、小要素入れると階層作れる
ex)
var x = $("<div>",
{ html : $('<span>',
{ text : 'jscafe'}
)
}
)
=> <div><span>jscafe</span></div>
要素の追加
対象要素.append(追加したい要素)
htmlに追加出来る
var x = $("<li>",
{ class : "menu-item",
html : $('<a>',
{ text : 'jscafe',
href : 'http://www.facebook.com/groups/565794633445499/'
})})
$('ul#menu-top').append(x)
ためしてみる
ちなみに、client側のhtml内だけの話で
特に公式Page自体をハックしてる
訳ではないので、ご安心を。
append(html)
appendの引数に直接html書いても良い
$('ul#menu-top').append(
"<li class='menu-item'>
<a href = 'http://www.facebook.com/groups/565794633445499/'>
jscafe
</a>
</li>"
)
複数マッチ時どうなる?
複数の要素内に追加される
要素の追加
● 要素内の先頭に追加 : prepend()
○ ex) $('ul').prepend('<li id='first'></li>')
● 要素内の最後に追加:append()
○ ex) $('ul').prepend('<li id='second'></li>')
● 要素の前に追加:before()
○ ex) $('li#first').prepend('<li id='zero'></li>')
● 要素の後に追加:after()
○ ex) $('li#second').prepend('<li id='last'></li>')
要素の削除
要素.remove()
例)さっきのjscafeを消す
$('li.menu-item:last').remove()
jQuery公式ページ
今日やった事で色々遊んでみて。
● menuの奇数に要素追加するとか
● downloadのurlを取得するとか
● 右上のリンクに要素追加/削除するとか
これからの進め方
1回目:jQuery関数/セレクタ(今日)
2回目:要素の操作とイベント
3回目:アニメーションとAjax
おしまい

Mais conteúdo relacionado

Mais procurados

よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているかよこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
Yuichiro Suzuki
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
純生 野田
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5
Hiroshi Oyamada
 
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
Atsushi Tadokoro
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
Yuki Tanaka
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Atsushi Tadokoro
 

Mais procurados (18)

OSC京都2011
OSC京都2011OSC京都2011
OSC京都2011
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
 
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているかよこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
 
Inside Movable Type
Inside Movable TypeInside Movable Type
Inside Movable Type
 
やはりお前らのMTMLは間違っている!
やはりお前らのMTMLは間違っている!やはりお前らのMTMLは間違っている!
やはりお前らのMTMLは間違っている!
 
iPhoneアプリ開発入門(1)ボタンと画像
iPhoneアプリ開発入門(1)ボタンと画像iPhoneアプリ開発入門(1)ボタンと画像
iPhoneアプリ開発入門(1)ボタンと画像
 
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5
 
0720 abc seminar
0720 abc seminar0720 abc seminar
0720 abc seminar
 
覚醒!JavaScript
覚醒!JavaScript覚醒!JavaScript
覚醒!JavaScript
 
5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
 
MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
 
Metro スタイル アプリで印刷
Metro スタイル アプリで印刷Metro スタイル アプリで印刷
Metro スタイル アプリで印刷
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
 

Semelhante a 公式page改ざんで学ぶjQuery入門 (jscafe7)

WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
Hishikawa Takuro
 

Semelhante a 公式page改ざんで学ぶjQuery入門 (jscafe7) (20)

2時間で学ぶjQuery
2時間で学ぶjQuery2時間で学ぶjQuery
2時間で学ぶjQuery
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門
 
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかJ qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
jQuery勉強会#3
jQuery勉強会#3jQuery勉強会#3
jQuery勉強会#3
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
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
 
探検!SwiftyJSON
探検!SwiftyJSON探検!SwiftyJSON
探検!SwiftyJSON
 
Jetpack Workshop
Jetpack WorkshopJetpack Workshop
Jetpack Workshop
 
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFXUnit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
 
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
 
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
mishimasyk#4
mishimasyk#4mishimasyk#4
mishimasyk#4
 

Mais de Ryuma Tsukano (8)

最近のTDDネタをカジュアルに
最近のTDDネタをカジュアルに最近のTDDネタをカジュアルに
最近のTDDネタをカジュアルに
 
実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決まで実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決まで
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascript
 
end to end testing(jscafe15)
end to end testing(jscafe15)end to end testing(jscafe15)
end to end testing(jscafe15)
 
Sass introduction (jscafe 10)
Sass introduction (jscafe 10)Sass introduction (jscafe 10)
Sass introduction (jscafe 10)
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
 
BDD by Jasmine (jscafe 13)
BDD by Jasmine (jscafe 13)BDD by Jasmine (jscafe 13)
BDD by Jasmine (jscafe 13)
 
Rails A/B testing by split gem
Rails A/B testing by split gemRails A/B testing by split gem
Rails A/B testing by split gem
 

Último

Último (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

公式page改ざんで学ぶjQuery入門 (jscafe7)