2009-08-03 234 views
48

如何使用jQuery選擇應用了特定CSS屬性的所有元素?例如:使用jQuery選擇具有特定CSS的所有元素

.Title 
{ 
    color:red; 
    rounded:true; 
} 

.Caption 
{ 
    color:black; 
    rounded:true; 
} 

如何通過名爲「rounded」的屬性進行選擇?

CSS類名非常靈活。

$(".Title").corner(); 
$(".Caption").corner(); 

如何將這兩個操作替換爲一個操作。也許這樣的事情:

$(".*->rounded").corner(); 

有沒有更好的方法來做到這一點?

+11

嘿,夥計們:*請在回答之前閱讀問題*!這個可憐的人得到了四分之四的完全錯誤的答案。 – Boldewyn 2009-08-03 06:22:49

回答

30

您不能(使用CSS選擇器)根據已應用於它們的CSS屬性選擇元素。

如果您想手動執行此操作,可以選擇文檔中的每個元素,循環遍歷它們,然後檢查您感興趣的屬性的計算值(雖然這可能只適用於真正的CSS屬性)組成如rounded)。它也會很慢。

更新響應編輯 - group selectors

$(".Title, .Caption").corner(); 
+1

+1爲目前唯一的答案解決問題:-) – Boldewyn 2009-08-03 06:24:39

+0

@Quentin:這個答案是否正確?見http://stackoverflow.com/questions/10651508和http://api.jquery.com/css/和http://meta.stackexchange.com/questions/132958/question-closure-incorrect#comment368460_132958 – 2012-05-18 15:22:15

+1

@RobertHarvey - 是的。請注意,在第1段中,我通過「使用CSS選擇器」來限定它的不可能性。第2段描述了一項解決方法。與問題相關的問題有很多答案,但具有積極投票分數的答案是我描述的工作的例子。 – Quentin 2012-05-18 15:30:12

54

這是一個兩歲的線程,但它仍然是有用的我,所以它可能是有用的人,也許。下面是我落得這樣做:

var x = $('.myselector').filter(function() { 
    return this.style.some_prop == 'whatever' 
}); 

不簡明扼要,我想,但我從來沒有需要這樣的事情,除了現在,這不是一般使用非常有效的,無論如何,我看到它。

25

謝謝,比茹。我用了你的解決方案,而是使用了jQuery的CSS,而不是純JavaScript,像這樣:

var x = $('*').filter(function() { 
    return $(this).css('font-family').toLowerCase().indexOf('futura') > -1 
}) 

這個例子將選擇其中font-family屬性值包含「富利」的所有元素。

0

自定義CSS屬性不可繼承,因此必須直接應用到每一個元素(即使你用js動態添加的屬性,則應該通過添加一個類做到這一點),所以......

CSS

.Title 
{ 
    color:red; 
} 

.Caption 
{ 
    color:black; 
} 

HTML

你並不需要定義一個圓形的:在所有真正的財產。只需使用 '四捨五入' 類的存在:

<div class='Title Rounded'><h1>Title</h1></div> 
<div class='Caption Rounded'>Caption</div> 

JS

jQuery('.Rounded').corner(); 
12

類似珠寶的。只是一點點的增強:

$('[class]').filter(function() { 
    return $(this).css('your css property') == 'the expected value'; 
    } 
).corner(); 

我想用$( '[類]')是更好的:

  • 沒有必要硬編碼的選擇(S)
  • 將不檢查所有的HTML元素一個接一個。

這是example

0

這裏是一個乾淨,容易理解的解決方案:

// find elements with jQuery with a specific CSS, then execute an action 
$('.dom-class').each(function(index, el) { 
    if ($(this).css('property') == 'value') { 
     $(this).doThingsHere(); 
    } 
}); 

這個解決方案是不同的,因爲它不使用角落,過濾器或回報。這是故意爲更多的用戶提供的。

東西來代替:

  1. 替換 「.dom級」 與您的選擇。
  2. 用您正在查找的內容替換CSS屬性和值。
  3. 將「doThingsHere()」替換爲您想要在該 找到的元素上執行的操作。
相關問題