prev/prevAll/next/nextAll/siblings/parent/parents/childrenメソッドを使って、現在の要素を基点として要素を取得する
<div id="family">
祖父
<div>
父
<div>兄</div>
<div>姉</div>
<div id="me">私
<div>ポチ
<div>タマ</div>
</div>
</div>
<div>弟</div>
<div>妹</div>
</div>
</div>
$(function () {
$("#me")
.css("font-weight", "bold") // id="me"の要素を太字に
.prev()
.css("background-color", "pink") // 直前の兄要素の背景をピンクに
.end() // カレント要素を元の位置に
.prevAll()
.css("color", "blue") // 全ての兄要素を青文字に
.end() // カレント要素を元の位置に
.next()
.css("background-color", "yellow") // 直後の弟要素の背景を黄色に
.end() // カレント要素を元の位置に
.nextAll()
.css("color", "red") // すべての弟要素を赤文字に
.end() // カレント要素を元の位置に
.siblings()
.css("font-style", "italic") // すべての兄弟要素をイタリック体に
.end() // カレント要素を元の位置に
.parent()
.css("border", "solid 1px red") // 親要素を赤枠で囲む
.end() // カレント要素を元の位置に
.children()
.css("font-size", "x-small"); // すべての子要素のフォントサイズを最小に
});
See the Pen
jQuery8-7 by shinjiezumi (@sezumi)
on CodePen.
jQueryオブジェクトが指す対象は変化するend/addBlockメソッド
jQueryオブジェクトは操作対象の要素(群)を保存している
もっとも、jQueryオブジェクトで保存している内容は不変ではない
prev
/prevAll
, next
/nextAll
, siblings
, parent
/parents
, children
などのメソッドを呼び出すとjQueryオブジェクトが指す要素も変化する
jQueryオブジェクトが指している要素(群)が変わってしまった場合、元の状態を戻す役割を持つのがend
メソッド。
メソッドチェーンとend
メソッドとを組み合わせることで、特定の要素とその周辺を行き来するような操作もシンプルなコードで記述できる。
また、addBack
メソッドを利用することで、状態をもとに戻すのではなく、「現在の要素セットに一つ前の状態の要素セットを追加」することもできる
end
メソッドであれば、単に直前の状態に戻すだけであるのに対して、addBack
メソッドは直前の状態を現在の状態に追加している
<ul id="list">
<li id="js">Javascript</li>
<li id="jquery">jQuery</li>
<li id="css">CSS</li>
</ul>
$(function () {
$("#list")
.children()
.css("background-color", "#ffc")
.addBack()
.css("border", "solid 1px red");
});