如圖,這里有兩個表格,需要實現的是為每個表格的奇數行添加樣式alt,使其背景顏色變成灰色
使用:odd
$(document).ready(function() {
$('tr:odd').addClass('alt');
});
結果如圖,兩個表格似乎合並為一個表格,而且此種形式計數是從0開始的。問題先暫放一下,看:nth-child()如何
使用nth-child(odd)
$(document).ready(function() {
$('tr:nth-child(odd)').addClass('alt');
});
結果如圖,兩個表格依舊獨立為兩個表格,而且計數是從1開始的。
這里有兩個不一樣的地方,表格個數不一樣以及計數基數不一樣
1、表格個數不一樣
要理解表格個數的區別,還得從它們的定義去理解(這里是參考jQuery基礎教程(第四版))
:even(匹配結果集中的偶數元素),回到案例,也就是說先把所有tr找出來,然后再到這個集合中查找偶數元素,這樣自然就相當於把兩個表格合並為一個表格了
:nth-child(even)(作為其父元素第偶數個子元素的元素),這里相當拗口。還是回到案例,就是說,先回到tr的各自父元素,此時的父元素自然table,而且有兩個父元素,然后再從父元素table出發查找其包含的子元素tr中的第偶數個元素,這樣就是依舊在兩個表格中獨立查找第偶數個子元素tr。
2、計數基數不一樣
有的是從0開始、有的是從1開始,剛開始記憶,確實有點傻傻分不清。還好書上P22里面的一段話,幫助理解了其區別。javascript數組是采用從0開始的編號方式,而css選擇符是正常的1開始計數。所以如果是采用的javascript數組的方式,那就從0開始計數,如::eq(n)、:odd、:even等等;而如果是在用css選擇符的方式,那就正常理解就可以了,如::nth-child()
最后摘抄書本里面帶有一句肯定語氣的結論::nth-child是jQuery中唯一從1開始計數的選擇符