README-ja
jQueryは必要ない(You Don't Need jQuery)
フロントエンドの開発環境はめまぐるしく進化していて、最近のブラウザでは十分な質、量のDOM/BOM APIが実装されています。もうDOM操作やイベント処理のためにjQueryを覚える必要はありません。また、ReactやAngularそしてVueなどのフロントエンドライブラリの流行により、DOMを直接操作することはアンチパターンとなりました。jQueryはそれほど重要ではなくなったのです。このプロジェクトは、jQueryでの書き方の代わりとなるネイティブでの書き方(IE10以上)をまとめます。
目次
Translations
セレクタ
classセレクタ、idセレクタ、属性セレクタのような主要セレクタはdocument.querySelectorもしくはdocument.querySelectorAllで代替できます。
jQueryのセレクタと比べて以下の違いがあります。
document.querySelectorはセレクタにマッチする最初のエレメントを返すdocument.querySelectorAllはセレクタにマッチする全てのエレメントのNodeListを返す。Array.prototype.slice.call(document.querySelectorAll(selector) || []);で配列に変換できる。セレクタにマッチする要素がなかった場合、jQueryは
[]を返すが、DOM APIはnullを返す。したがってNull Pointer Exceptionに注意する必要がある。もしくはdocument.querySelectorAll(selector) || []のように||を使ってデフォルト値を指定しておく。
注意:
document.querySelectorとdocument.querySelectorAllはかなり遅いです。もし、パフォーマンスが必要ならdocument.getElementByIdやdocument.getElementsByClassName、document.getElementsByTagNameを使ってください。
1.0 セレクタによる選択
1.1 クラス名による選択
1.2 idによる選択
1.3 属性による選択
1.4 子孫要素の選択
1.5 兄弟要素の選択
兄弟要素
直前の兄弟要素
直後の兄弟要素
1.6 祖先要素の選択
指定要素からdocument方向に遡って走査し、セレクタにマッチする最初の祖先要素を返します。
1.7 Parents Until
指定要素からセレクタにマッチする祖先要素までdocument方向に遡って走査し、フィルタにマッチする祖先要素を全て取得します。ただし、セレクタで指定された要素は含みません。
1.8 フォーム
input/textarea
.radio内でのe.currentTargetのインデックスを返す
1.10 bodyを取得する
1.11 属性の設定、取得
属性値を取得する
属性値を設定する
data-属性を取得する
CSSとスタイル
2.3 PositionとOffset
Position
offset parentを起点として、エレメントの座標を取得する。
Offset
documentを起点として、エレメントの座標を取得する。
2.4 スクロール位置
縦スクロールバーの位置を取得する。
DOM操作
3.1 Remove
DOMからエレメントを削除する。
3.2 Text
テキストを取得する
子孫エレメントも含めた全テキスト内容を取得する。
テキストを設定する
エレメントのコンテントを指定されたテキストに設定する。
3.3 HTML
HTMLを取得する
HTMLを設定する
3.4 Append
最後の子要素としてエレメントを追加する。
3.5 Prepend
最初の子要素としてエレメントを追加する。
3.6 insertBefore
指定要素の後ろに新しいノードを追加する。
3.7 insertAfter
指定要素の前に新しいノードを追加する。
3.8 is
セレクタにマッチするなら
trueを返す。3.9 clone
エレメントのディープコピーを生成する。
3.10 empty
全ての子ノードを削除する。
3.11 wrap
エレメントを指定のHTMLで囲む。
3.12 unwrap
セレクタにマッチしたエレメントの親要素をDOMから削除する。マッチしたエレメント自体は残す。
3.13 replaceWith
セレクタにマッチしたエレメントの内容を与えられた内容に置き換える。
Ajax
Fetch APIはXMLHttpRequestを置き換える新たな規格です。ChromeとFirefoxで動きます。レガシーなブラウザでもpolyfillを使えます。
IE9以上ならgithub/fetch、IE8以上ならfetch-ie8、jsonpを利用したいならfetch-jsonpを試してみてください。
4.1 マッチしたエレメントをサーバから取得したHTMLに置き換える。
イベント
名前空間(namespace)と委譲(delegation)を利用した完全な代替手段が必要なら、 https://github.com/oneuijs/oui-dom-events を参照してください。
5.0 ドキュメントが読み込まれたときの動作(
DOMContentLoaded)5.1 イベントをバインドする(
on)5.2 イベントをアンバインドする(
off)5.3 イベントを発火させる(
trigger)
ユーティリティ関数
殆どのユーティリティ関数はネイティブのAPIで置き換えることができます。表記の一貫性やパフォーマンスを重視した他のライブラリを使う選択肢もあります。lodashがおすすめです。
6.1 基本的なユーティリティ関数
isArray
配列かどうか判定する。
isWindow
windowかどうか判定する。
inArray
配列の中で、指定された値が最初に現れたインデックスを返す。(見つからなければ-1を返す)。
isNumeric
数値かどうか判定する。
typeofを使ってください。ライブラリを使う場合、typeofは正確でない場合があります。isFunction
JavaScript関数オブジェクトかどうか判定する。
isEmptyObject
空のオブジェクトである(列挙できる要素がない)か判定する。
isPlainObject
{}もしくはnew Objectで生成されたオブジェクトであるか判定する。extend
二つ以上のオブジェクトをマージする。
object.assignはECMAScript6のAPIですが、polyfillも利用できます。trim
前後の空白を除去する。
map
配列やオブジェクトを新しい配列に変換する。
each
配列やオブジェクトに対して繰り返し処理を行う。
grep
フィルター関数に合致したエレメントだけを返す。
type
JavaScript「クラス」名を判定します。
merge
二つの配列をマージする。
now
現在の時刻を返す。
proxy
関数内で実行されるthisを任意のオブジェクトに変更する。
makeArray
配列形式のオブジェクトを配列に変換する。
6.2 contains
ある要素が他の要素の子孫であるか判定する。
6.3 globaleval
JavaScriptコードをグローバル空間で実行する。
Promise
promiseは非同期処理の最終的な処理結果を表します。jQueryにはpromiseを扱うための独自の方法があります。ネイティブのJavaScriptではPromises/A+規格に則り、薄く、最小限のAPIを実装しています。
7.1 done, fail, always
doneはpromiseが成功(resolved)したとき、fallは失敗(rejected)したとき、alwaysはどちらの場合も呼び出されます。7.2 when
whenは複数のpromiseを扱うときに使います。すべてのpromiseの結果が返ったときに成功となります(失敗が含まれてても成功となります)。7.3 Deferred
Deferredはpromiseを作成する方法の一つです。
アニメーション
8.1 show、hide
8.2 toggle
エレメントが表示されていないなら表示し、表示されているなら非表示にします。
8.3 fadeIn、fadeOut
8.4 fadeTo
エレメントのopacityを調整してください。
8.5 fadeToggle
フェードイン・フェードアウトを伴ってエレメントの表示・非表示を切り替えます。
8.6 スライドアップ、スライドダウン
8.7 slideToggle
スライドを伴って、エレメントの表示・非表示を切り替えます。
8.8 animate
CSSプロパティで定義されたアニメーションを表示します。
選択肢
You Might Not Need jQuery - ネイティブのJavaScriptでイベント、エレメント、Ajaxを扱うサンプル集(英語)
npm-dom and webmodules - npmで利用できるDOMモジュールを集めたOrganizationです
対応ブラウザ





Latest ✔
Latest ✔
10+ ✔
Latest ✔
6.1+ ✔
ライセンス
MIT
Last updated