jQuery 選擇器之eq是什么意思
代碼如下,請(qǐng)問(wèn)各位大神,eq選擇器的正確用法,并且如何使用如下代碼中用到的三種選擇方法獲得相同的對(duì)象 ??
??? <div class="dh">
?? ??? ??? ??? ?<span>第一頁(yè)</span>
?? ??? ??? ??? ?<span>第二頁(yè)</span>
?? ??? ??? ??? ?<span>第三頁(yè)</span>
?? ??? ??? ??? ?<span>第四頁(yè)</span>
?? ??? ??? ??? ?<span>第五頁(yè)</span>
?? ??? ??? ?</div>
?? ??? ??? ?<script type="text/javascript">
?? ??? ??? ??? ?var $btn = $('.dh span');
?? ??? ??? ??? ?var $no3=$('.dh span:eq(3)');
?? ??? ??? ??? ?var $no_3=$('.dh span:nth-child(4)');?? ?
?? ??? ??? ??? ?console.log($btn[2]);
?? ??? ??? ??? ?console.log($no3);
?? ??? ??? ??? ?console.log($no_3);???
</script>
2016-10-27
回復(fù) 無(wú)所畏懼小小?。?/p>
首先指出你問(wèn)題里面的一個(gè)錯(cuò)誤:$('.dh span').[3],這個(gè)寫法是不對(duì)的,沒(méi)有這種語(yǔ)法
回答:
關(guān)于這部分的知識(shí),和CSS選擇器的知識(shí)是重合的,jQuery在做元素選擇上的時(shí)候,寫法和CSS幾乎是一樣的,拿jQuery和CSS做對(duì)比吧,這樣可能容易理解一點(diǎn)。
基于你的代碼來(lái)做研究:
1.? $('.dh span')
這句的意識(shí)是:選中 類名為 dh 下的所有后代元素 span,那么我們?cè)趯慍SS時(shí),要選中這類元素做樣式,寫法就是:
.dh span { .... }
2.?$('.dh span').eq(3) ?等價(jià)于?$('.dh span:eq(3)')
這個(gè)意思已經(jīng)解釋過(guò)了,不再贅述,寫CSS時(shí),寫成:
.dh span:nth-child[4] { ... }
3.?.dh span:nth-child(4)
這句的意思是:?選中類名為 dh 下的后代元素 span 集合中的第4個(gè) span 元素,可能你已經(jīng)看到了,這個(gè)寫法和第二個(gè)CSS選擇器的寫法是一樣的,其實(shí)在你的例子中:
$('.dh span:eq(3)') 和??.dh span:nth-child(4) 是指向了同一個(gè)元素,這兩句只是用不同的方式指向了同一個(gè)元素而已,理解上是一模一樣的。
問(wèn)題:那么為什么 eq的用了參數(shù)3,而nth-child用了參數(shù)4呢?
eq使用的是下標(biāo)值的方式,下標(biāo)值是從0開始計(jì)數(shù)的,所以當(dāng)你要選擇第四個(gè)元素,就寫成3;
nth-child使用的是自然數(shù)方式,選擇第四個(gè)元素,就寫成4
最后再擴(kuò)展一下:$('.dh span').eq(3)? 這種寫法在課程里面沒(méi)有出現(xiàn),那么這么寫有什么好處么?
設(shè)想一下,給你上面的HTML結(jié)構(gòu)下的span元素依次添加同一個(gè)樣式(注意這里是一個(gè)個(gè)的添加樣式,不是同時(shí)添加),我們?cè)撛趺磳??首先考慮的是使用for循環(huán)來(lái)實(shí)現(xiàn)
代碼如下:
上面的寫法很麻煩對(duì)吧,要加一堆連接符,那么改成這樣
2016-10-24
$('.dh span:eq(3)')
選擇類名為 .dh 的元素的后代元素 中標(biāo)簽名稱為 span 元素的 索引值為3 的元素(即:.dh元素的第4個(gè)span子元素)
上面的寫法等價(jià)于:
$('.dh span').eq(3)
寫成這樣是不是比較好理解?
2016-10-22
eq(index):索引到index+1的位置上
2016-10-22
如eq(index).css;
索引到index位置上,給特定位置添加樣式;