소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="js/jquery-1.11.3.js"></script> <script> $(function(){ $('h1').css('border','1px solid red'); $('ol>li:contains("menu3")').css('border','1px solid red'); $('ol>li:has("em")').css('border','1px solid red'); $('ol>li').find('em').css('border','1px solid red'); //위의 em과 비교 $('ol>li:has("li")').css('border','1px solid red'); $('ol>li:eq(1)').siblings().css('border','1px solid red'); $('ol>li').not('ol>li:eq(1)').css('border','1px solid red');//위와 동일결과 $('ol>li').contents().css('border','1px solid red'); $('ol>li').contents().filter('strong').css('border','1px solid red'); $('ol>li').filter('.cl1').css('border','1px solid red'); //$('ol>li').find('.cl1').css('border','1px solid red');//적용되지않는다 $('ol>li').find('a').css('border','1px solid red');//찾는방법 이해하기 자식요소중에 찾는것 $('a:contains("menu3")').parent().children().css('border','1px solid red'); $('ol>li:last').children().children('li:last').css('border','1px solid red'); $('ol>li:last').children().children().children().css('border','1px solid red').end().css('border','1px solid gray'); $('ol>li').not('li:eq(1)').filter('.cl1').css('border','1px solid red').end().css('color','green'); }); </script> </head> <body> <h1>목차</h1> <ol> <li>menu1</li> <li>menu<em>2</em></li> <li class="cl1"><a href="#">menu3</a></li> <li><strong>menu4</strong></li> <li> <ul> <li>menu4-1</li> <li><a href="#">menu4-2</a></li> </ul> </li> </ol> </body> </html> | cs |
결과
$('ol>li:contains("menu3")').css('border','1px solid red');
$('ol>li:contains("menu3")').css('border','1px solid red');
contains("")는 괄호 안의 내용과 일치하는 것을 선택. "me", "3" 등의 글을 넣어 보고 비교
$('ol>li:has("em")').css('border','1px solid red');
$('ol>li').find('em').css('border','1px solid red');
둘의 결과를 비교
has를 쓴 결과
find를 쓴 결과
$('ol>li:eq(1)').siblings().css('border','1px solid red');
$('ol>li').not('ol>li:eq(1)').css('border','1px solid red');
siblings()는 형제 노드를 말한다. eq(1)에 해당하는 것을 뺀 형제노드들이 선택된다.
두줄의 결과는 동일하다.
$('ol>li').contents().css('border','1px solid red');
$('ol>li').contents().filter('strong').css('border','1px solid red');
이것은 위의 결과에서 'strong'태그만을 필터로 거쳐 menu4만 선택된다
$('ol>li').filter('.cl1').css('border','1px solid red');
$('ol>li').find('a').css('border','1px solid red');
filter와 find의 차이는 find는 자식노드 중에서 찾는다
...등 실행