お寿司か焼き肉食べたい

まじめな事からしょーもない事まで
めにゅーを開く(投げやり)

ありとあらゆる要素を取得することができます。そう、iPhoneならね

セレクタでは弟要素・子要素・孫要素の指定だけでした。
jQuery関数を使用すると全パターンの要素を取得することができます。

parent (親要素の取得)

引数を指定することができ、取得親要素の絞り込み条件を指定できます。
親以上の先祖は対象になりません。

$(function() {
 // testCクラスの親で.ptestクラスが付与されているものに.abababを付与
 $('.thisC').parent('.ptest').addClass('ababab');
/*
<div>
 <div class="ptest ababab">
  <div class="thisC">
  </div>
 </div>
 <div class="ptest2">
  <div class="thisC">
  </div>
 </div>
</div>
 */


 // testCクラスの親全てに.abababを付与
 $('.thisC').parent().addClass('ababab');
/*
<div>
 <div class="ptest ababab">
  <div class="thisC">
  </div>
 </div>
 <div class="ptest2 ababab">
  <div class="thisC">
  </div>
 </div>
</div>
 */
});

parents (先祖要素の取得)

引数には条件を指定することができ、取得先祖要素を絞り込むことができます。

$(function() {
 // testCクラスの先祖要素全で.ptestクラスが付与されているものに.abababを付与
 $('.thisC').parents('.ptest').addClass('ababab');
/*
<div>
 <div class="ptest ababab">
  <div class="ptest ababab">
   <div class="thisC"></div>
  </div>
 </div>
</div>
*/

 // testCクラスの先祖全てに.abababを付与
 $('.thisC').parents().addClass('ababab');
/*
<div class="ababab">
 <div class="ptest ababab">
  <div class="ptest ababab">
   <div class="thisC"></div>
  </div>
 </div>
</div>
 */
});

closest (最初に一致した先祖要素を取得)

parentsは全ての先祖が対象でしたが、最初に出現したものだけを取得することができます。
これも引数は条件を指定することができます。

$(function() {
// testCクラスの先祖要素全で.ptestクラスが付与されているものに.abababを付与
$('.thisC').closest('.ptest').addClass('ababab');
/*
<div>
 <div class="ptest">
  <div class="ptest ababab">
   <div>
    <div class="thisC"></div>
   </div>
  </div>
 </div>
</div>
*/

// testCクラスの先祖全てに.abababを付与
$('.thisC').closest().addClass('ababab');
/*
<div>
 <div class="ptest">
  <div class="ptest">
   <div class="ababab">
    <div class="thisC"></div>
   </div>
  </div>
 </div>
</div>
*/
});

children (直下にある子要素の取得)

子要素を取得します。子要素だけで、孫要素の取得はできません。
複数の子要素がある場合は、全ての子要素を取得します。
これも絞り込みの条件を付与することができます。

$(function() {
// testCクラスの子要素で.ptestクラスが付与されているものに.abababを付与
$('.thisC').children('.ptest').addClass('ababab');
/*
<div>
 <div class="thisC">
  <div class="ptest ababab"></div>
  <div></div>
  <div class="ptest ababab"></div>
 </div>
</div>
*/

// testCクラスの子要素全てに.abababを付与
$('.thisC').children().addClass('ababab');
/*
<div>
 <div class="thisC">
  <div class="ptest ababab"></div>
  <div class="ababab"></div>
  <div class="ptest ababab"></div>
 </div>
</div>
*/
});

contents (テキストノードを含む全てを取得)

ネイティブなJSのアレと同じく、テキスト、空白、改行など全てのノードを取得します。
これは条件を入れることができません。

$(function() {
// testCクラスの子・孫要素をとにかく全部取得。addClassは対応できるものだけ動くためエラーにはならない
$('.thisC').contents().addClass('ababab');
/*
<div>
 <div class="thisC">
  <div class="ptest ababab"></div>
  <div></div>
  <div class="ptest ababab"></div>
 </div>
</div>
*/
});

find (全ての子・孫要素を取得)

子・孫要素を全て取得することができます。findに関しては、条件指定が必須となります。

$(function() {
// testCクラスの子・孫要素のうち、.ftestが付与されているものにクラス追加
$('.thisC').find('.ftest').addClass('ababab');
/*
<div>
 <div class="thisC">
  <div class="ftest ababab">
   <div class="ftest ababab"></div>
  </div>
  <div>
   <div class="ftest ababab"></div>
  </div>
  <div class="ptest ababab">
   <div class="test"></div>
  </div>
 </div>
</div>
*/
});

next (すぐ隣りの弟要素の取得)

すぐ隣の弟要素を取得します。
取得した要素以降は取得しません。
これも絞り込みの条件を付与することができます。

$(function() {
// testCクラスの隣の要素で.ntestが付与されている要素にクラスを付与します。
$('.thisC').next('.ntest').addClass('ababab');
/*
<div>
 <div class="thisC"></div>
 <div class="ntest ababab"></div>
 <div class="aaaaa"></div>
 <div class="ntest"></div>
</div>
*/


// testCクラスの隣の要素にクラスを付与します。
$('.thisC').next().addClass('ababab');
/*
<div>
 <div class="thisC"></div>
 <div class="ntest ababab"></div>
 <div class="aaaaa"></div>
 <div class="ntest"></div>
 <div class="thisC"></div>
 <div class="aaaaa ababab"></div>
</div>
*/
});

nextAll (弟要素の全取得)

全ての弟要素を取得します。
これも絞り込みの条件を付与することができます。

$(function() {
// testCクラスの隣の要素で.ntestが付与されている要素全てにクラスを付与します。
$('.thisC').nextAll('.ntest').addClass('ababab');
/*
<div>
 <div class="thisC"></div>
 <div class="ntest ababab"></div>
 <div class="aaaaa"></div>
 <div class="ntest ababab"></div>
</div>
*/


// testCクラスの隣の要素全てにクラスを付与します。
$('.thisC').nextAll().addClass('ababab');
/*
<div>
 <div class="thisC"></div>
 <div class="ntest ababab"></div>
 <div class="aaaaa ababab"></div>
 <div class="ntest ababab"></div>
 <div class="thisC ababab"></div>
 <div class="aaaaa ababab"></div>
</div>
*/
});

prev (すぐ隣りの兄要素の取得)

すぐ隣の兄要素を取得します。
取得した要素以降は取得しません。
これも絞り込みの条件を付与することができます。

$(function() {
// testCクラスの隣の要素で.ntestが付与されている要素にクラスを付与します。
$('.thisC').prev('.ntest').addClass('ababab');
/*
<div>
 <div class="ntest"></div>
 <div class="aaaaa"></div>
 <div class="ntest ababab"></div>
 <div class="thisC"></div>
</div>
*/


// testCクラスの隣の要素にクラスを付与します。
$('.thisC').prev().addClass('ababab');
/*
<div>
 <div class="ntest"></div>
 <div class="aaaaa"></div>
 <div class="ntest ababab"></div>
 <div class="thisC"></div>
 <div class="aaaaa ababab"></div>
 <div class="thisC"></div>
</div>
*/
});

prevAll (兄要素の全取得)

全ての兄要素を取得します。
これも絞り込みの条件を付与することができます。

$(function() {
// testCクラスの隣の要素で.ntestが付与されている要素全てにクラスを付与します。
$('.thisC').prevAll('.ntest').addClass('ababab');
/*
<div>
 <div class="ntest ababab"></div>
 <div class="aaaaa"></div>
 <div class="ntest ababab"></div>
 <div class="thisC"></div>
</div>
*/


// testCクラスの隣の要素全てにクラスを付与します。
$('.thisC').prevAll().addClass('ababab');
/*
<div>
 <div class="ntest ababab"></div>
 <div class="aaaaa ababab"></div>
 <div class="ntest ababab"></div>
 <div class="thisC ababab"></div>
 <div class="aaaaa ababab"></div>
 <div class="thisC"></div>
</div>
*/
});