jQuery Traversal - 子孫
子孫とは、子、孫、ひ孫などです。
jQuery を使用すると、DOM ツリーをたどって要素の子孫を見つけることができます。
DOM ツリーを下へトラバースする
DOM ツリーを下へトラバースする 2 つの jQuery メソッド
children()
find()
jQueryの子() メソッド
children() メソッド 選択された要素の直接の子要素をすべて返します。
このメソッドは、DOM ツリーを 1 レベル下まで走査するだけです。
次の例は、各 <div> 要素の直接の子をすべて返します:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> .descendants * { display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px; } </style> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("div").children().css({"color":"red","border":"2px solid red"}); }); </script> </head> <body> <div class="descendants" style="width:300px;">div (当前元素) <p>p (儿子元素) <span>span (孙子元素)</span> </p> <p>p (儿子元素) <span>span (孙子元素)</span> </p> </div> </body> </html>
プログラムを実行して試してみましょう
また、オプションのパラメーターを使用して、子要素の検索をフィルターすることもできます。
次の例は、<div> の直接の子であるクラス名 "1" を持つすべての <p> 要素を返します:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> .descendants * { display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px; } </style> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("div").children("p.1").css({"color":"red","border":"2px solid red"}); }); </script> </head> <body> <div class="descendants" style="width:300px;">div (当前元素) <p class="1">p (儿子元素) <span>span (孙子元素)</span> </p> <p class="2">p (儿子元素) <span>span (孙子元素)</span> </p> </div> </body> </html>
プログラムを実行して試してください
jQuery find() メソッド
find() メソッドは、選択された要素の子孫要素を最後の子孫まで返します。 次の例は、<div> の子孫であるすべての <span> 要素を返します:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> .descendants * { display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px; } </style> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("div").find("span").css({"color":"red","border":"2px solid red"}); }); </script> </head> <body> <div class="descendants" style="width:300px;">div (当前元素) <p>p (儿子元素) <span>span (孙子元素)</span> </p> <p>p (儿子元素) <span>span (孙子元素)</span> </p> </div> </body> </html>プログラムを実行して試してください
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> .descendants * { display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px; } </style> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("div").find("*").css({"color":"red","border":"2px solid red"}); }); </script> </head> <body> <div class="descendants" style="width:300px;">div (当前元素) <p>p (儿子元素) <span>span (孙子元素)</span> </p> <p>p (儿子元素) <span>span (孙子元素)</span> </p> </div> </body> </html>プログラムを実行して試してみましょう