2011-11-27 18 views
2

我想根據表格和值中的行位置來使用JavaScript對行中的表格單元格進行條帶化處理,所以我想用tr:nth-child(i) td來抓取只有細胞(忽略th)...剝離表格:Chrome中的tr:nth-​​child td中的錯誤

下面是一個小提示,顯示我找到的問題(錯誤?):http://jsfiddle.net/redroot/pBe94/。正如你可能看到我在表格主體的前四行中剝去td元素。在Chrome和Safari中,第二行和第三行中只有第一個單元格,而如果我先找到該行,那麼使用find("td")它可以正常工作,如第四行所示。

起初我以爲這是我的標記,但看起來很好,它在Firefox中工作正常。所以我有點難住,任何幫助將不勝感激!

(SME的事情發生在我的測試document.querySelectorAll,僅適用於Chrome和Safari)。

回答

3

是的,似乎有一些錯誤的WebKit確實。我以前也經歷過這個here,但該錯誤顯然還沒有得到修復。

一件事做的是迫使灒做選擇,而不是本機的WebKit引擎:

$.expr[":"].dummy = function() { 
    return true; 
}; 

然後你可以使用:

$("#rows tbody tr:nth-child(1) td:dummy").css("background-color","#e0e0e0"); 

由於:dummy不可本身,jQuery將使用Sizzle(它的自定義選擇庫)。雖然(如往常一樣)採取這種非本地方式是一種表現懲罰。

http://jsfiddle.net/pBe94/2/

+0

不錯的快速回答,非常感謝。我將嘗試最終解耦jQuery依賴關係,但這將是一個好開始,歡呼 – redroot

+0

我想非jQuery的方法是先查找錶行,然後找到任何子級tds ... hmmm – redroot

+0

@redroot:使用CSS怎麼樣?如果我沒有記錯,CSS確實工作正常。 – pimvdb