.parents()
- .parents( ) 1.0追加
- 補足事項
- デモ
.parents( ) 1.0追加
戻り値:jQuery
マッチしている要素のDOMツリーを遡った全祖先要素を取得します。 取得した要素のセットの順番は、直近の親から外側に向かって並べられます。 parents(s付き)とparentは似ていますが違いは、後者であるparentは1段階上の階層までしかDOMツリーを遡りません。
引数 | 説明 |
---|---|
selector | フィルタリングをセレクタで指定します。 |
補足事項
次のようなリストのコードがあった場合、
<ul class="level-1">
<li class="item-i">I</li>
<li class="item-ii">II
<ul class="level-2">
<li class="item-a">A</li>
<li class="item-b">B
<ul class="level-3">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</li>
<li class="item-c">C</li>
</ul>
</li>
<li class="item-iii">III</li>
</ul>
item-aを起点に.parents()を実行すると、level-2, item II, level-1のリスト要素が対象となり背景が赤に変更されます。 (HTML構造で更にその上の階層に親要素があれば、それらも対象になります。)
$('li.item-a').parents().css('background-color', 'red');
デモ
B要素の全親(先祖)要素を取得し、そのタグ名を出力します。
<!DOCTYPE html>
<html>
<head>
<style>
b, span, p, html body {
padding: .5em;
border: 1px solid;
}
b { color:blue; }
strong { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div>
<p>
<span>
<b>My parents are: </b>
</span>
</p>
</div>
<script>
var parentEls = $("b").parents()
.map(function () {
return this.tagName;
})
.get().join(", ");
$("b").append("<strong>" + parentEls + "</strong>");
</script>
</body>
</html>
挨拶をクリックすると、各DIVの親(先祖)要素のボーダーが赤くなります。
<!DOCTYPE html>
<html>
<head>
<style>
p, div, span {margin:2px; padding:1px; }
div { border:2px white solid; }
span { cursor:pointer; font-size:12px; }
.selected { color:blue; }
b { color:red; display:block; font-size:14px; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p>
<div>
<div><span>おはよう</span></div>
<span>こんにちは</span>
</div>
<div>
<span>こんばんわ</span>
</div>
</p>
<b>ここにDIV親(先祖)要素の数を出力します</b>
<script>
function showParents() {
$("div").css("border-color", "white");
var len = $("span.selected")
.parents("div")
.css("border", "2px red solid")
.length;
$("b").text("DIV親(先祖)要素の数: " + len);
}
$("span").click(function () {
$(this).toggleClass("selected");
showParents();
});</script>
</body>
</html>
© 2010 - 2017 STUDIO KINGDOM