> 文档中心 > jQuery API ( 二 ) -------- 筛选方法 与 排他思想

jQuery API ( 二 ) -------- 筛选方法 与 排他思想


       我们在上一篇文章中学习了 jQuery 选择器,这一章我们来说说 jQuery 的筛选方法有哪些,其目的仍然是为了获取元素,只不过是站在了父级,子级,兄弟级之间的角度来获取元素,以下便是常见常用的筛选方法:

目录:

筛选方法:  

 一:parent ()

 二:children ('选择器’)

 三:find ('选择器‘)

 四:siblings ('选择器')

 五:nextAll ('选择器') 

 六:prevAll ('选择器') 

 七:eq (索引值) 

 八: hasClass ('类名')

排他思想: 

原生 JS 的排他思想:

jQuery 的排他思想:


筛选方法:  

语法 用法 说明
parent () $('li').parent() 查找最近的父级
children ('选择器’) $('ul').children(('li') 查找子代(只有儿子)
find ('选择器‘) $('ul').find('li') 查找后代(包括儿子,孙子)
siblings ('选择器') $('ul li:eq(2)').siblings('li') 查找兄弟,不包括自身
nextAll ('选择器') $('ul li:eq(2)').nextAll('li') 查找自身往后的兄弟
prevAll ('选择器') $('ul li:eq(2)').prevAll('li') 查找自身往前的兄弟
eq (索引值) $('ul li').eq(2) 查找索引为2的li
hasClass ('类名') $('ul li:first').hasClass('one') 判断第一个li是否有类名one,放回true/false

 一:parent ()

查找最近的父级

此处为获取ul的父级div

    
console.log($('ul').parent());


 二:children ('选择器’)

查找子代(只有儿子),括号内无选择器则返回所有的子代

此处为在 ul 的子代中找 li

 
console.log( $('ul').children('li') );

 当后代有多个时,也只能获取到儿子,如此处 div 的后代有 ul 和 li ,但只能获取到子代 ul

  
console.log( $('div').children() );

 当括号内无选择器时,则可以得到所有的子级,此处 div 的子级为 ul 和另一个 div

  
console.log( $('div').children() );


 三:find ('选择器‘)

查找后代,包括儿子,孙子

此处为在 div 的后代中找 li,li 为 div 的孙子级

  
console.log( $('div').find('li') );


四:siblings ('选择器')

查找兄弟级元素,不包括自身,括号内无选择器则获取所有兄弟级

此处为找 ul 的兄弟级 p 元素,不包括自身

  

console.log( $('ul').siblings('p') );

当括号内无选择器,则返回所有的兄弟级,不包括自身

  

console.log( $('ul').siblings() );


 五:nextAll ('选择器') 

获取到除自身外 自身下面的兄弟级

此处为获取到 ul 下方的兄弟级,不包括自身 

  

console.log( $('ul').nextAll() );


六:prevAll ('选择器') 

 与nextAll相似,这个获取到的是除自身外 自身上方的兄弟级

此处为获取 ul 上方的兄弟级,不包括自身

  

console.log( $('ul').prevAll() );


七:eq (索引值) 

用于获取指定索引的元素

此处为获取到 ul 下索引为 1 的子元素,与 ul:eq(1) 等价

  
console.log( $('ul li').eq(1) );


八: hasClass ('类名')

判断某元素是否有某个类名,注意括号内要判断的类名不需要加 ‘ . ’有则返回 true,没有则返回 false

此处为判断第一个 li 有没有为 one 的类名

  
console.log( $('ul li:first').hasClass('one') );


排他思想: 

       在原生JS中我们已经学习了排他思想,例如在点击按钮变色中,即使用 for 循环遍历所有元素添加点击事件,然后是我们经典的 ‘’干掉其他人,留下我自己‘’,既然jQuery中有隐式迭代,既不需要再使用 for 循环绑定,其思想我们来对比一下:

原生 JS 的排他思想:

 干掉其他人,留下我自己

               var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){   btns[i].addEventListener('click',function(){      for(var j=0;j<btns.length;j++){ btns[j].style.backgroundColor=''      }      this.style.backgroundColor='pink'   })}    

jQuery 的排他思想:

有隐式迭代,不需要循环绑定事件,只需要使点击元素设置变色,其他兄弟级设置不变色

               $('button').click(function(){    $(this).css('background','pink')  //点击的按钮变色    $(this).siblings('button').css('background','')  //点击按钮的兄弟级不变色})