jquery选择器篇
Posted Peng4Wang1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery选择器篇相关的知识,希望对你有一定的参考价值。
var j = jquery.noConflict();
让出对变量$的控制权,并将jquery付给别名j
jquery.noConflict(true);让出对变量$和jquery的控制权
selector 表示选择器
<div ><div><input/></div></div>
$(div <div <input)
$(div).find(div).find(input).eq(0)
context 表示jquery对象
<div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> </div>
var $li = $("ul li"); // 返回当前文档的document对象 document.writeln( $li.context ); // [object htmlDocument] document.writeln( $li.context === document ); // true var n1 = document.getElementById("n1"); var $n3 = $( "#n3", n1 ); // 返回n1 document.writeln( $n3.context ); // [object HTMLDivElement] document.writeln( $n3.context === n1 ); // true var $n2 = $("#n2"); var $n4 = $( "#n4", $n2 ); // 返回$n2的context属性:document对象 document.writeln( $n4.context ); // [object HTMLDocument] document.writeln( $n4.context === document ); // true var $n3 = $("#n3", n1); var $n5 = $( "#n5", $n3 ); // 返回$n3的context属性:n1 document.writeln( $n5.context ); // [object HTMLDivElement] document.writeln( $n5.context === n1 ); // true
jQuery.length 属性详解
length表示jquery对象封装的dom元素个数,如果该对象是一个空的jQuery对象,没有封装任何元素,则返回0。jQuery.size() 函数详解
size()
函数用于返回当前jQuery对象封装的元素个数。jQuery.index() 函数详解
index()
函数用于获取当前jQuery对象中指定DOM元素的索引值。
Jquery("#id") 通过id访问元素
Jquery("Div")通过TagName访问元素
Jquery(".className") 通过className访问元素
<div id="n1"> <p id="n2" class="test"></p> <p id="n3" class="detail"> <span id="n4" class="test codeplayer"></span> </p> </div>
// 选择了id分别为n1、n2、n4的三个元素 $("#n1,#n2,span.test");
// 选择了id分别为n3、n2、n4的三个元素 $("p.detail,.test");
jQuery 选择器(parent > child)详解
// 这里的parent表示具体的父辈选择器 // 这里的child表示具体的子辈选择器 jQuery( "parent > child" )
<div id="n1"> <p id="n2" class="test"> <span id="n3" class="a">Hello</span> </p> <p id="n4" class="detail"> <span id="n5" class="b codeplayer">World <span id="n6" class="c">365mini.com</span> </span> </p> </div>
// 选择了id分别为n3、n5的两个元素 // n6不是p标签的子元素,而是孙子辈的元素,因此无法匹配 $("p > span");
我们可以配合使用所有元素选择器(*)来实现只查找孙子辈元素的选择器。例如:我们想要查找id为n1
的元素的孙子辈的span标签,对应的jQuery代码如下:
// 选择了id分别为n3、n5的两个元素 $("#n1 > * > span");
jQuery 选择器(prev + next)详解
选择器next
的查找范围必须是与"prev元素"相邻的下一个元素,并且必须是"prev元素"的同辈元素。
<div id="n1"> <p id="n2" class="test"> <span id="n3" class="a">Hello</span> <span id="n4">Hello</span> </p> <p id="n5" class="detail"> <span id="n6" class="b codeplayer">World <span id="n7" class="a">http://365mini.com</span> <span id="n8"></span> <span id="n9"></span> </span> </p> </div>
现在,我们想要查找与p标签相邻的下一个同辈p标签,则可以编写如下jQuery代码:
// 选择了id为n5的一个元素 $("p + p");
接着,我们查找与span标签相邻的下一个同辈span标签,则可以编写如下jQuery代码:
// 选择了id分别为n4、n8、n9的三个元素 // n4是n3的next,n8是n7的next,n9是n8的next $("span + span");
查找与包含类名a的span标签相邻的下一个同辈span标签,对应的jQuery代码如下:
// 选择了id分别为n4、n8的两个元素 // n8没有包含类名a,因此无法匹配其next——n9 $("span.a + span");
jQuery的prev ~ siblings选择器用于匹配jQuery 选择器(prev ~ siblings)详解
prev
元素之后的所有同辈的siblings
元素,将其封装为jQuery对象并返回。<div id="n1"> <p id="n2" class="test"> <span id="n3" class="a">Hello</span> <span id="n4">Hello</span> </p> <p id="n5" class="detail"> <span id="n6" class="b codeplayer">World <span id="n7" class="a">http://365mini.com</span> <span id="n8"></span> <span id="n9"></span> </span> </p> </div>
// 选择了id为n5的一个元素 $("p ~ p");
// 选择了id分别为n4、n8、n9的三个元素 // n9属于n7的~siblings,也是n8的~siblings,同一个元素只计入一次 $("span ~ span");
jQuery 选择器(:first)详解
jQuery的:first选择器用于获取匹配到的第一个元素,将其封装为jQuery对象并返回。:first选择器等价于:eq(0)选择器。// 选择了id为n1的一个元素 $("div:first");
// 选择了id为n4的一个元素 // 虽然HTML中有两个ul标签,但:first不是分别取每个ul中的第一个li,而是从上到下只要找到一个符合条件的元素就立即返回 $("ul li:first");
jQuery 选择器(:last)详解
jQuery的:last选择器用于获取匹配到的最后一个元素,将其封装为jQuery对象并返回。
与该选择器相对的是:first选择器,用于获取匹配到的第一个元素。
// 选择了id为n7的一个元素 $("div:last");
Jquery选择器(:even)
jQuery的:even选择器用于匹配所有索引值为偶数的元素,将其封装为jQuery对象并返回。
<div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> <div id="n7"> <table id="n8"> <tr id="n9"><td>cell1</td></tr> <tr id="n10"><td>cell2</td></tr> <tr id="n11"><td>cell3</td></tr> </table> </div> </div>
// 选择了id分别为n9、n11的两个元素 $("tr:even");
jquery(:odd)查找索引值为基数的元素
jQuery 选择器(:eq(index))详解
// 这里的selector表示具体的选择器 // 这里的index表示指定的索引值 jQuery( "selector:eq(index)" )
<div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> <li id="n10">item2</li> </ul> </div> </div>
现在,我们想要查找第2个div标签,则可以编写如下jQuery代码:// 选择了id为n2的一个元素 $("div:eq(1)");
接着,获取匹配ul li选择器的元素中的第4个元素,则可以编写如下jQuery代码:
// 选择了id为n9的一个元素 $("ul li:eq(3)");:gt(index)大于索引的元素
jQuery 选择器(:first-child)详解
jQuery的:first-child选择器用于匹配作为父元素的第一个子元素的元素,将其封装为jQuery对象并返回。:first-child选择器等价于:nth-child(0)选择器。<div id="n1"> CodePlayer <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5" class="c">item2</li> <li id="n6" class="c">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> <li id="n10">item2</li> </ul> </div> </div>
// 选择了id分别为n4、n9的两个元素 $("ul li:first-child");
jQuery 选择器(:only-child)详解
jQuery的:only-child选择器用于匹配作为父元素的唯一子元素的元素,将其封装为jQuery对象并返回。<div id="n1"> <div id="n2"> CodePlayer--专注于编程开发技术分享 <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> </ul> </div> </div>
现在,我们想要查找不同父辈元素的最后一个div标签,则可以编写如下jQuery代码:
// 选择了id为n9的一个元素 $("ul li:only-child");
查找作为父元素的"独生子"的ul标签,则可以编写如下jQuery代码:
// 选择了id分别为n3、n8的两个元素 // n3的父元素n2虽然有自己的文本内容,但是只有n3这一个子元素,因此n3也算是唯一子元素 $("ul:only-child");
jQuery 选择器(:nth-child(n))详解
jQuery的:nth-child(n)选择器用于匹配作为父元素下的第n个(或特定顺序的)子元素的元素,将其封装为jQuery对象并返回。- :nth-child(odd)表示匹配作为父元素的奇数(第1、3、5、7……个)子元素的元素;
- :nth-child(even)表示匹配作为父元素的偶数(第2、4、6、8……个)子元素的元素;
- :nth-child(3n)表示匹配作为父元素的第
3n
个子元素的元素(n表示包括0在内的自然数,下同); - :nth-child(3n+1)表示匹配作为父元素的第
3n+1
个子元素的元素; - :nth-child(3n+2)表示匹配作为父元素的第
3n+2
个子元素的元素;
<div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4" class="c">item1</li> <li id="n5">item2</li> <li id="n6" class="c">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> <li id="n10">item2</li> </ul> </div> </div>
现在,我们想要为每个ul标签内查找它的第2个li标签,则可以编写如下jQuery代码:
// 选择了id分别为n5、n10的两个元素 $("ul li:nth-child(2)");
接着,为每个ul标签查找自然顺序为奇数的li标签,则可以编写如下jQuery代码:
// 选择了id分别为n4、n6、n9的3个元素 $("ul li:nth-child(odd)");
jQuery 选择器(:nth-last-child(n))详解
jQuery 选择器(:first-of-type)详解
jQuery的:first-of-type选择器用于匹配作为父元素的第一个该类型的子元素的元素,将其封装为jQuery对象并返回。:first-of-type选择器等价于:nth-of-type(1)选择器。<div id="n1"> <div id="n2" class="abc"> <label id="n3">label1</label> <span id="n4">span1</span> <span id="n5" class="abc">span2</span> <span id="n6">span3</span> </div> <div id="n7"> <span id="n8" class="abc">span1</span> <span id="n9">span2</span> </div> </div>
现在,我们查找作为父元素的span类型子元素中的"长子"的span标签,则可以编写如下jQuery代码:
// 选择了id分别为n4、n8的两个元素 // n4虽然不是n2的第一个子元素,但它是n2所有span类型子元素中的第一个,因此可以匹配 $("span:first-of-type");
接着,查找所有包含类名abc
的元素,而且它们必须是父元素的该类型子元素中的"长子",则可以编写如下jQuery代码:
// 选择了id分别为n2、n8的两个元素 // .abc可以匹配id分别为n2、n5、n8的3个元素,n2是n1所有div类型子元素中的第一个,n8是n7所有span类型子元素中的第一个,但n5不是n2所有span类型子元素中的第一个,因此不能匹配n5。 $(".abc:first-of-type");
jQuery 选择器(:has(selector))详解
jQuery的:has(selector)选择器用于匹配所有包含selector
元素的元素,将其封装为jQuery对象并返回。<div id="n1"> <p id="n2" class="test"> <span id="n3" class="a">Hello</span> <span id="n4">Hello</span> </p> <p id="n5" class="detail"> <span id="n6" class="b codeplayer">World <span id="n7" class="a">http://365mini.com</span> <span id="n8"></span> <span id="n9"></span> </span> </p> </div>
现在,我们想要在id为n1
的div标签内查找所有包含span标签的元素,则可以编写如下jQuery代码:
// 选择了id分别为n2、n5、n6的3个元素 $("#n1 :has(span)");
接着,我们在id为n1
的div标签内查找包含类名为b
的span标签的元素,则可以编写如下jQuery代码:
// 选择了id为n5的一个元素 $("#n1 :has(span.b)");
jQuery 选择器(:not(selector))详解
jQuery的:not(selector)选择器用于排除所有与选择器selector
匹配的元素,并将剩余的其他DOM元素封装为jQuery对象并返回。<div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> <li id="n10">item2</li> </ul> </div> </div>
现在,我们想要查找除了id为n2
的元素以外的所有元素,则可以编写如下jQuery代码:
// 选择除了id为n2的元素以外的所有元素,包括html、head、style、link、title、meta、script等 $(":not(#n2)"); // 这相当于 $("*:not(#n2)");
接着,查找所有ul标签中除了id为n5
的li标签以外的所有li标签,则可以编写如下jQuery代码:
// 选择了id分别为n4、n6、n9、n10的4个元素 $("ul li:not(#n5)");
jQuery 选择器(:contains(text))详解
<div id="n1"> <div id="n2"> <span id="n3">张三</span> <span id="n4">CodePlayer</span> </div> <div id="n5"> <span id="n6">CodePlayer</span> </div> <div id="n7"> CodePlayer </div> </div>
现在,我们想要在id为n1
的div标签内查找所有包含字符串"CodePlayer"的元素,则可以编写如下jQuery代码:
// 选择了id分别为n2、n4、n5、n6、n7的5个元素 // n5的子元素n6中包含"CodePlayer",因此n5也会被计入在内 $("#n1 :contains(CodePlayer)");
接着,在id为n1
的div标签内查找所有包含字符串"张三"的元素,则可以编写如下jQuery代码:
// 选择了id分别为n2、n3的两个元素 // n2的子元素n3包含"张三",因此n2也会被计入在内 $("#n1 :contains(张三)");
jQuery 选择器(:empty)详解
空的元素,是指该元素既不包含子元素,也不包含文本内容(哪怕是空格或换行符,也算有文本内容)。以下面这段HTML代码为例:
<div id="n1"> <div id="n2"> <span id="n3">张三</span> <span id="n4"> </span> </div>以上是关于jquery选择器篇的主要内容,如果未能解决你的问题,请参考以下文章