Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -

Hayato Mizuno
Hayato MizunoCyberAgent, Inc. at CyberAgent, Inc.
Hello jQuery
SACSS SPECIAL4 FRONTREND IN SAPPORO
@pocotan001
Hayato Mizuno
📣 #01 Introduction
✎ #02 The Basics
📕 #03 Patterns
📣

#01 Introduction
#01 Introduction

photo by shoze
#01 Introduction

photo by victoria white2010
57%
#01 Introduction
jQuery

None

57%

57.3%

54.9%

50.8%

49.1%

46.7%

46%

42.7%

42.8%

2012/01

#01 Introduction

39.2%

2012/05

2012/09

2013/01

37.4%

2013/05

Historical trends in the usage of JavaScript libraries
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
#01 Introduction
想像力は知識より重要である。
Albert Einstein
$('div').css('color', 'red');

#01 Introduction
$('div').css('color', 'red');
!
!
!
!

var divs = document.getElementsByTagName('div');
 
for (var i = 0; i < divs.length; i++) {
divs[i].style.color = 'red';
}

#01 Introduction
何かを学ぶのに、自分自身で経
験する以上に良い方法はない。
Albert Einstein
調べられるものを、いちいち覚
えておく必要などない。
Albert Einstein
調べられるものを、いちいち覚
えておく必要などない。
Albert Einstein

ggrks!
jQueryの読み込み

#01 Introduction
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
<!doctype html>
<html>
<body>
<p>jQuery</p>
<script src="jquery.js"></script>
<script>
// Your code goes here.
</script>
</body>
</html>

#01 Introduction
<!doctype html>
<html>
<body>
<p>jQuery</p>
<script src="//ajax.googleapis.com/ajax/libs/
jquery/1.10.2/jquery.min.js"></script>
<script>
// Your code goes here.
</script>
</body>
</html>

#01 Introduction

https://developers.google.com/speed/libraries/devguide?hl=ja&csw=1#jquery
CDNの良いところ

_ 無ホスティング
_ ドメインシャーディング
_ クロスサイトキャッシング
_ etc.

#01 Introduction
Google CDNで人気のバージョン
1.4.2 (http)

1.7%

1.7.2 (http)

1.6%
1.7.1 (http)

1.6%
1.3.2 (http)

1.2%
その他

4.7%
2013年3月

#01 Introduction

http://www.stevesouders.com/blog/2013/03/18/http-archive-jquery/
Google CDNで人気のバージョン
1.4.2 (http)

1.7%

1.7.2 (http)

1.6%
1.7.1 (http)

1.6%

89.2%

1.3.2 (http)

1.2%
その他

4.7%
2013年3月

#01 Introduction

http://www.stevesouders.com/blog/2013/03/18/http-archive-jquery/
jQuerify

#01 Introduction
https://chrome.google.com/webstore/detail/jquerify/gbmifchmngifmadobkcpijhhldeeelkc
https://github.com/bgrins/devtools-snippets/blob/master/snippets/jquerify/jquerify.js
✎

#02 The Basics
$('div').css('color', 'red');

#02 The Basics
$ or $()

$('div').css('color', 'red');

#02 The Basics
セレクタ

$('div').css('color', 'red');

#02 The Basics
セレクタ

$('.a').css('color', 'red');

#02 The Basics
セレクタ

$('ul > li').css('color', 'red');

#02 The Basics
セレクタ

$('td:even').css('color', 'red');

#02 The Basics
セレクタ

$(':first').css('color', 'red');

#02 The Basics
セレクタ

$(':first-child').css('color', 'red');

#02 The Basics
セレクタ

$(':animated').css('color', 'red');

#02 The Basics
メソッド

$(':animated').css('color', 'red');

#02 The Basics
引数

$(':animated').css('color', 'red');

#02 The Basics
メソッド

$(':animated').addClass('a');

#02 The Basics
メソッド

$(':animated').html('じぇじぇじぇ');

#02 The Basics
メソッド

$(':animated').fadeOut();

#02 The Basics
セミコロン
で〆
$(':animated').fadeOut();

#02 The Basics
$ = jQuery

jQuery(':animated').fadeOut();

#02 The Basics
APIのカテゴリー

_ Ajax
_ Attributes
_ CSS
_ Callbacks
_ Core
_ Data
_ Deferred
_ Dimensions
#02 The Basics

_ Effects
_ Events
_ Forms
_ Manipulation
_ Selector
_ Traversing
_ Utilities
jQuery API Documentation
jQuery 日本語リファレンス | js STUDIO
メソッドチェイン

#02 The Basics
メソッド
$('div').css('color', 'red')

#02 The Basics
$('div').css('color', 'red')
.addClass('a').html('じぇじぇじぇ');

#02 The Basics
$('div').css('color', 'red')
.addClass('a').html('じぇじぇじぇ');

#02 The Basics
メソッド

メソッド

メソッド

$('div').css('color', 'red')
.addClass('a').html('じぇじぇじぇ');

#02 The Basics
ゲッターとセッター

#02 The Basics
セッター
(設定)

$('div').css('color', 'red');

#02 The Basics
ゲッター
(取得)

$('div').css('color');

#02 The Basics
ゲッター(取得)
.attr('href')

#02 The Basics

セッター(設定)
.attr('href', '/')
ゲッター(取得)

セッター(設定)

.attr('href')

.attr('href', '/')

.width()

.width('80px')

#02 The Basics
ゲッター(取得)

セッター(設定)

.attr('href')

.attr('href', '/')

.width()

.width('80px')

.html()

.html('<p>ほげ<p>')

#02 The Basics
ゲッター(取得)

セッター(設定)

.attr('href')

.attr('href', '/')

.width()

.width('80px')

.html()

.html('<p>ほげ<p>')

.text()

.text('ほげ')

#02 The Basics
ゲッター(取得)

セッター(設定)

.attr('href')

.attr('href', '/')

.width()

.width('80px')

.html()

.html('<p>ほげ<p>')

.text()

.text('ほげ')

.val()

.val('')

#02 The Basics
戻り値

#02 The Basics
#a の width に #b の width を適用

$('#a').width($('#b').width());

#02 The Basics
$('div')

$('div').css('color', 'red');

#02 The Basics
"red"

$('div').css('color');

#02 The Basics
$('div')

#02 The Basics
$('div')
.css('color', 'red')

#02 The Basics

$('div')
$('div')
.css('color', 'red')
.find('p')

#02 The Basics

$('div')
$('div')
$('div')
.css('color', 'red')
.find('p')
.addClass('hoge')

#02 The Basics

$('div')
$('div')
$('div p')
$('div')
.css('color', 'red')
.find('p')
.addClass('hoge')
.width()

#02 The Basics

$('div')
$('div')
$('div p')
$('div p')
$('div')
.css('color', 'red')
.find('p')
.addClass('hoge')
.width()
.fadeOut()

#02 The Basics

$('div')
$('div')
$('div p')
$('div p')
122
$('div')
.css('color', 'red')
.find('p')
.addClass('hoge')
.width()
.fadeOut()

#02 The Basics

$('div')
$('div')
$('div p')
$('div p')
122
エラー
// 空の関数
$.noop();
// jqXHRオブジェクト
$.ajax('example.html');
// コールバックリスト
$.Callbacks();

#02 The Basics
📕

#03 Patterns
リーダブルコード

#03 Patterns
$('ul').find('.a').css('color',
'red').end().find('.b').css('color',
'green').text('Hello');

#03 Patterns
$('ul')
.find('.a')
.css('color', 'red')
.end()
.find('.b')
.css('color', 'green')
.text('Hello');

#03 Patterns
var $ul = $('ul'),
$a = $ul.find('.a'),
$b = $ul.find('.b');
!

$a.css('color', 'red');
$b.css('color', 'green').text('Hello');

#03 Patterns
DRY

#03 Patterns
$('#a').on('click', function() {
$('#modal').show();
});

#03 Patterns
$('#a').on('click', function() {
$('#modal').show();
});
$('#b').on('click', function() {
$('#modal').show();
});
$('#c').on('click', function() {
$('#modal').show();
});

#03 Patterns
$('#a,#b,#c').on('click', function() {
$('#modal').show();
});

#03 Patterns
$('.button').on('click', function() {
$('#modal').show();
});

#03 Patterns
カプセル化・疎結合

#03 Patterns
$(function() {
$('.button').on('click', function() {
$('#modal').show();
});
});

#03 Patterns
var modal = {
init: function() {
$('.button').on('click', modal.show);
},
show: function() {
$('#modal').show();
}
};
$(modal.init);

#03 Patterns
jQuery Anti-Patterns for Performance & Compression
JavaScript Style Guides And Beautifiers
jQuery Core Style Guide
JavaScript Patterns
Design Patterns In jQuery
jQuery Boilerplate
何かを学ぶのに、自分自身で経
験する以上に良い方法はない。
Albert Einstein
プログラミングは
書かなきゃ覚えない
エビングハウスの忘却曲線
100%

58%
44%
26%

20分後

1時間後

1日後

23%
1週間後

21%
1ヶ月後

忘却曲線 - Wikipedia
エビングハウスの忘却曲線
100%

58%
44%
26%

20分後

1時間後

1日後

23%
1週間後

21%
1ヶ月後

忘却曲線 - Wikipedia
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
私には特別の才能はない。
ただ私は、情熱的に好奇心
が旺盛なだけだ。
Albert Einstein
Thank you
SACSS SPECIAL4 FRONTREND IN SAPPORO
1 of 101

Recommended

⑱jQueryをおぼえよう!その4 by
⑱jQueryをおぼえよう!その4⑱jQueryをおぼえよう!その4
⑱jQueryをおぼえよう!その4Nishida Kansuke
1.3K views40 slides
MSA ASSOCIATE PROFILE by
MSA ASSOCIATE PROFILEMSA ASSOCIATE PROFILE
MSA ASSOCIATE PROFILESaeed Alam Muhammad
138 views15 slides
Try Web Components by
Try Web ComponentsTry Web Components
Try Web Components拓樹 谷
5.4K views39 slides
ネイティブ開発アンチパターン by
ネイティブ開発アンチパターンネイティブ開発アンチパターン
ネイティブ開発アンチパターンYuki Tamura
44.9K views48 slides
㉗HTML5+jQueryでお絵かき by
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かきNishida Kansuke
3.7K views67 slides
⑯jQueryをおぼえよう!その2 by
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
21.5K views60 slides

More Related Content

Similar to Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -

WordBech Osaka No.28 by
WordBech Osaka No.28WordBech Osaka No.28
WordBech Osaka No.28Kite Koga
2K views60 slides
Native x Webでいいとこどり開発 ~ピグトーク~ by
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Kazunari Hara
1.5K views43 slides
J query element.key by
J query element.keyJ query element.key
J query element.keysayoko miura
179 views10 slides
jQuery Performance Tips – jQueryにおける高速化 - by
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -Hayato Mizuno
14K views93 slides
jQueryでiTunes Store風スライドショーを作ってみる by
jQueryでiTunes Store風スライドショーを作ってみるjQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみるYasuhito Yabe
2.1K views48 slides
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm... by
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...Toru Tamaki
182 views18 slides

Similar to Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -(20)

WordBech Osaka No.28 by Kite Koga
WordBech Osaka No.28WordBech Osaka No.28
WordBech Osaka No.28
Kite Koga2K views
Native x Webでいいとこどり開発 ~ピグトーク~ by Kazunari Hara
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
Kazunari Hara1.5K views
jQuery Performance Tips – jQueryにおける高速化 - by Hayato Mizuno
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Hayato Mizuno14K views
jQueryでiTunes Store風スライドショーを作ってみる by Yasuhito Yabe
jQueryでiTunes Store風スライドショーを作ってみるjQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみる
Yasuhito Yabe2.1K views
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm... by Toru Tamaki
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...
文献紹介:Simple Copy-Paste Is a Strong Data Augmentation Method for Instance Segm...
Toru Tamaki182 views
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう by Hiroaki Wakamatsu
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Hiroaki Wakamatsu2.1K views
20110714 j queryベーシック by 良太 増子
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
良太 増子618 views
復習も兼ねて!C#6.0-7.0 by Yuta Matsumura
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura324 views
CodeIgniterによるPhwittr by kenjis
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
kenjis9.3K views
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション by Yosuke Onoue
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーションAngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
Yosuke Onoue9.4K views
データ可視化勉強会 by Daichi Morifuji
データ可視化勉強会データ可視化勉強会
データ可視化勉強会
Daichi Morifuji13.7K views
10分で分かる最近のCakePHP by Masashi Shinbara
10分で分かる最近のCakePHP10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
Masashi Shinbara4.1K views
ftechmeetup_明日から使える?Webデザインに使える小技集 by kanatsum
ftechmeetup_明日から使える?Webデザインに使える小技集ftechmeetup_明日から使える?Webデザインに使える小技集
ftechmeetup_明日から使える?Webデザインに使える小技集
kanatsum90 views
プログラミング技法特論第8回 by Noritada Shimizu
プログラミング技法特論第8回プログラミング技法特論第8回
プログラミング技法特論第8回
Noritada Shimizu796 views
脱コピペ!デザイナーにもわかるPHPとWP_Query by Hidekazu Ishikawa
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa4.7K views
LDD'12/Summer in KITAMI Opening Slide by ohotech
LDD'12/Summer in KITAMI Opening SlideLDD'12/Summer in KITAMI Opening Slide
LDD'12/Summer in KITAMI Opening Slide
ohotech383 views
JavaScriptをまじめに考えました+ by Hiroaki Okubo
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+
Hiroaki Okubo7.3K views

More from Hayato Mizuno

レスポンシブWebデザインでうまくやるための考え方 by
レスポンシブWebデザインでうまくやるための考え方レスポンシブWebデザインでうまくやるための考え方
レスポンシブWebデザインでうまくやるための考え方Hayato Mizuno
13.8K views66 slides
"今" 使えるJavaScriptのトレンド by
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンドHayato Mizuno
10.4K views108 slides
メンテナブルPSD by
メンテナブルPSDメンテナブルPSD
メンテナブルPSDHayato Mizuno
3.1K views47 slides
赤い秘密 by
赤い秘密赤い秘密
赤い秘密Hayato Mizuno
1.5K views8 slides
なんでCSSすぐ死んでしまうん by
なんでCSSすぐ死んでしまうんなんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうんHayato Mizuno
79.8K views130 slides
フロントエンドの求めるデザイン by
フロントエンドの求めるデザインフロントエンドの求めるデザイン
フロントエンドの求めるデザインHayato Mizuno
5.5K views99 slides

More from Hayato Mizuno(9)

レスポンシブWebデザインでうまくやるための考え方 by Hayato Mizuno
レスポンシブWebデザインでうまくやるための考え方レスポンシブWebデザインでうまくやるための考え方
レスポンシブWebデザインでうまくやるための考え方
Hayato Mizuno13.8K views
"今" 使えるJavaScriptのトレンド by Hayato Mizuno
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド
Hayato Mizuno10.4K views
メンテナブルPSD by Hayato Mizuno
メンテナブルPSDメンテナブルPSD
メンテナブルPSD
Hayato Mizuno3.1K views
なんでCSSすぐ死んでしまうん by Hayato Mizuno
なんでCSSすぐ死んでしまうんなんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうん
Hayato Mizuno79.8K views
フロントエンドの求めるデザイン by Hayato Mizuno
フロントエンドの求めるデザインフロントエンドの求めるデザイン
フロントエンドの求めるデザイン
Hayato Mizuno5.5K views
レンダリングを意識したパフォーマンスチューニング by Hayato Mizuno
レンダリングを意識したパフォーマンスチューニングレンダリングを意識したパフォーマンスチューニング
レンダリングを意識したパフォーマンスチューニング
Hayato Mizuno18.1K views
CoffeeScriptってなんぞ? by Hayato Mizuno
CoffeeScriptってなんぞ?CoffeeScriptってなんぞ?
CoffeeScriptってなんぞ?
Hayato Mizuno13.5K views
ノンプログラマーのためのjQuery入門 by Hayato Mizuno
ノンプログラマーのためのjQuery入門ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門
Hayato Mizuno149.3K views

Recently uploaded

概念モデリングワークショップ 基礎編 by
概念モデリングワークショップ 基礎編概念モデリングワークショップ 基礎編
概念モデリングワークショップ 基礎編Knowledge & Experience
19 views71 slides
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料) by
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
185 views63 slides
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料) by
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
217 views33 slides
JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化Knowledge & Experience
8 views34 slides
01Booster Studio ご紹介資料 by
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料ssusere7a2172
220 views19 slides

Recently uploaded(8)

pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
01Booster Studio ご紹介資料 by ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172220 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之83 views

Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -