2011-10-20 159 views
2

我知道如何選擇按屬性的元素是這樣的:選擇DOM元素設置

<input value="myvalue" /> 
$('input[value="myvalue"]') 

但它是如何可能選擇與設置指定的CSS規則DOM元素。 例如,我需要選擇所有與CSS「background-position」設置的元素;

+0

使用:輸入,而不是輸入,因爲:輸入選擇所有有點像輸入,按鈕,提交,單選,多選等 –

回答

4

似乎沒有成爲這個jQuery selector,但你可以使用一個.filter()減少選擇,以滿足您的需求:

$('div').filter(function() { 
    return ($(this).css('backgroundPosition')); // tests for existence 
}); 

然而,這裏的問題是,即使「背景 - 位置'未設置,一些瀏覽器將其設置爲默認值。您必須與這些默認值進行比較,但是您將無法確定這些值是否在樣式表中明確設置。

更新:。 IE8返回$(this).css('backgroundPosition')爲「未定義」無論什麼workaround是測試「backgroundPositionX」和/或「backgroundPositionY」單獨然而,雖然默認應該「0%」 ,IE8報告默認爲「0px」代替測試)

更新2: Firefox不返回單個屬性,只有組合的'background-position';個人,Webkit都會這樣做)

$('div').filter(function() { 
    return ($(this).css('backgroundPosition') !== "0% 0%" // firefox, webkit 
     && $(this).css('backgroundPositionX') !== "0px" // ie8 
     && $(this).css('backgroundPositionY') !== "0px"); 
}); 

http://jsfiddle.net/mblase75/s8dx2/23/

+0

輸入元素我有一種感覺,這會在某些瀏覽器產生假陽性。 –

+0

在Chrome中,至少這會返回所有'div'元素,無論您是否設置了background-position(否則''background-position'爲'0%0%',除非您將其設置爲其他內容):http ://jsfiddle.net/LGmEp/ –

+0

是的,它似乎很大程度上取決於瀏覽器 - 並不是所有的CSS屬性都有默認值。 – Blazemonger