我知道如何選擇按屬性的元素是這樣的:選擇DOM元素設置
<input value="myvalue" />
$('input[value="myvalue"]')
但它是如何可能選擇與設置指定的CSS規則DOM元素。 例如,我需要選擇所有與CSS「background-position」設置的元素;
我知道如何選擇按屬性的元素是這樣的:選擇DOM元素設置
<input value="myvalue" />
$('input[value="myvalue"]')
但它是如何可能選擇與設置指定的CSS規則DOM元素。 例如,我需要選擇所有與CSS「background-position」設置的元素;
似乎沒有成爲這個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");
});
輸入元素我有一種感覺,這會在某些瀏覽器產生假陽性。 –
在Chrome中,至少這會返回所有'div'元素,無論您是否設置了background-position(否則''background-position'爲'0%0%',除非您將其設置爲其他內容):http ://jsfiddle.net/LGmEp/ –
是的,它似乎很大程度上取決於瀏覽器 - 並不是所有的CSS屬性都有默認值。 – Blazemonger
使用:輸入,而不是輸入,因爲:輸入選擇所有有點像輸入,按鈕,提交,單選,多選等 –