Jquery选择器

Jquery选择器

 
1)选择器写法:$( )---> $('div') 字符串
 
根据css样式来进行选取。css叫做添加样式,但是jQuery叫做添加行为。
选择器
CSS模式
jQuery模式
描述
标签名
div{}
$('div')
获取所有div标签的DOM元素
ID
#box{}
$('#box')
获取一个ID为box的DOM对象
class(类名)
.box{}
$('.box')
获取所有class名为box的DOM对象
 
一个小的知识点:ID选择器的失明现象。
 
    ID在一个页面中只能出现一次,这是一个唯一标识符。在jQuery中就会存在问题。
 
    选择器选择出的对象,有一些属性和方法(length,.size())
 

jQuery的兼容性

    css3的子选择器(不兼容IE6)
 
    但是到了jQuery中,jQuery会自行将不兼容IE的问题解决掉。
 
    jQuery的DOM对象和原生JavaScript的DOM对象之间的属性方法是不通用的,但是可以共同存在
 

相互转换:

    $('DOM')[0].style.color=red;
    $('DOM').get(0).style.color=red;
    jQuery的DOM元素转换原生JavaScript的DOM元素
       解析数组 通过get方法
    原生JavaScript的DOM元素转换jQuery的DOM元素
       使用jq的函数包裹原生DOM对象
 

进阶选择器:

选择器
CSS模式
jQuery模式
群组选择器
div,span,p{}
$('div,span,p')
后代选择器
ul li a{}
$('ul li a')
通配选择器
*{}
$('*')
 

通配选择器

选择所有;对性能有极大的浪费所以不能在全局范围内使用,最好的方法就是在局部环境下使用;
 
$('ul li a,ul li em,ul li strong');
 
简化成通配选择器:
 
$('ul li *')
 

高级选择器:

 
1)层次选择器
选择器
css模式
jQuery模式
描述
后代选择器
ul li a{}
$('ul li a')
获取追溯到的所有元素
子选择器
div>p{}
$('div>p')
只获取子类节点
next选择器
div+p{}
$('div+p')
只获取某节点后一个同级DOM元素
nextAll选择器
div~p{}
$('div~p')
获取某节点后所有同级DOM元素
 
 
jQuery为后代选择器提供了一个方法find()这个find方法里面有一个参数,就是想要找到的后代(可以是标签,类名,ID)
 
    $('div p').css('color','red')  ==  $('div').find('p').css('color','red') 
 
jQuery为子选择器提供了一个方法,children(),参数同上;
 
    $('div>p').css('color','red')  == $('div').children('p').css('color','red');
 
jQuery提供了next(), nextAll( ) 选择器,参数同上:注意next()选择器,只选择后一个元素。
 
    $('div+p').css('color','red')  == $('div').next('p').css('color','red')
 
    $('div~p').css('color','red')  == $('div').nextAll('p').css('color','red')
 
注意:children() , next() , nextAll() 这些方法如果不传递参数的话, 那么就默认传递一个通配符*,通常在使用这些选择器的时候,我们需要精准的选择元素,避免发生各种怪异结果。
 

属性选择器:

CSS模式
jQuery模式
描述
input[name]
$('input[name]')
获取具有这个属性的DOM元素
input[name=XXX]
$('input[name=XXX]')
获取具有属性且属性值为XXX的DOM元素
input[value][name=XXX]
$('input[value][name=XXX]')
获取有value 属性且name为XXX的DOM元素
 
....
 

过滤选择器:伪类选择器:

过滤器名
jQuery语法
说明
返回
:first
$('li:first')
选取第一个元素
单个元素
:last
$('li:last')
选取最后一个元素
单个元素
:not(选择器)
$('li:not(.red)')
选取class不是red的元素
一组元素
:even
$('li:even')
选择偶数的所有元素
一组元素
:odd
$('li:odd')
选择所有奇数元素
一组元素
:eq
$('li:eq(1)')
选择对应下表的元素
单个元素
 
 

内容过滤器

过滤器名
 jQuery语法
说明
返回
:contains(text)
$('li:contains(123456)')
选择有123456文本的元素
一组元素
:empty
$(li':empty')
选取li中不包含子元素或空文本的元素
一组元素
:has(选择器)
$('ul:has(.red)')
选择子元素含有类red的ul
一组元素
 
 
jQuery为了优化:has选择器性能,提供了一个方法.has()
    
    $('ul:has(.red)')==$('ul').has('.red')
 
 

可见性选择器

过滤器名
jQuery语法
说明
返回
:hidden
$(li:hidden)
选取所有不可见元素
集合元素
:visible
$('li:visible')
选取所有可见元素
集合元素
 
注:是否可见的判定因素为display:block & display :none
 

其他方法:

 
jQuery在选择器和过滤器的基础上提供了一些常用的方法,方便我们开发时灵活使用。
方法名
jQuery语法
说明
返回
is()
li.is('.red')
传递选择器、DOM、jquery对象
true||false
hasClass()
$('li').hasClass('red')
就是is('.'+class)
true||false
 
is()方法
 
    $('li').is('.red');
 
    $('li').hasClass('red');
 
 
.end()终止当前选择器的遍历,回到上个选择条件;
 
原文地址:https://www.cnblogs.com/li923/p/11553707.html