2009-08-03 12 views
48

jQueryを使用して、特定のCSSプロパティが適用されているすべての要素を選択するにはどうすればよいですか?例:jQueryを使用して、特定のCSSを持つすべての要素を選択します。

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

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

"rounded"というプロパティで選択する方法は?

CSSクラス名は非常に柔軟です。

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

この2つの操作を1つの操作に置き換える方法。たぶんこのようなもの:

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

これを行うには良い方法はありますか?

+11

お世話になりました。*お返事の前に質問をお読みください!この貧しい人は5つの完全に間違った答えのうち4つを得ました。 – Boldewyn

答えて

30

CSSセレクタを使用して、適用されたCSSプロパティに基づいてエレメントを選択することはできません。

これを手動で実行したい場合は、ドキュメント内のすべての要素を選択してループし、興味のあるプロパティの計算値をチェックすることができます(これは実際のCSSプロパティでのみ機能しますroundedなどのように構成されています)。それはまた遅いだろう。編集に対応して

アップデート - group selectors

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

これまでのところ、唯一の答えは+1です:-) – Boldewyn

+0

@Quentin:この答えは正しいですか? http://stackoverflow.com/questions/10651508およびhttp://api.jquery.com/css/およびhttp://meta.stackexchange.com/questions/132958/question-closure-incorrect#comment368460_132958 –

+1

@RobertHarveyを参照してください。 - はい、そうです。第1項では、「CSSセレクタを使用する」ことが不可能であることに留意します。パラグラフ2では、回避策について説明します。質問にリンクされているのはいくつかの回答がありますが、肯定的な投票のスコアを持つものが私の説明した仕事の例です。 – Quentin

54

これは2歳のスレッドですが、それはおそらく、他の人に役に立つかもしれないので、それはまだ私には有用でした。私が望むよう

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

として簡潔ではないが、私は今を除いて、このような何かを必要としたことがない、と私はそれを見るように、それは、とにかく一般的な使用のために非常に効率的ではありません。ここでは、私がやってしまったものです。

25

ありがとう、Bijou。私はあなたのソリューションを使用し、代わりに純粋ジャバスクリプトのjQueryのの.cssを使用し、このような:

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

この例font-family属性値が「フューチュラ」が含まれるすべての要素を選択することになります。

+1

うん、これも私のために働いた。私は将来の参考のために、[working jsfiddle](http://jsfiddle.net/raduluchian/rs37d/3/)を保存しました。 –

+3

あなたはちょうど私の3時間長い心の痛みから私を救った..そのための+1 –

0

カスタムCSSプロパティが継承されないので、それぞれの要素に直接適用する必要があります(あなたが動的にプロパティを追加するJSを使用している場合でも、あなたがクラスを追加することによって、それを行う必要があります)、そう...

CSS

.Title 
{ 
    color:red; 
} 

.Caption 
{ 
    color:black; 
} 

あなたが丸め定義する必要はありませんHTML

:すべての真の性質を。ビジューのよう

jQuery('.Rounded').corner(); 
+0

これは決して質問に答える。 –

12

同様

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

JS:ちょうど '丸い' クラスの存在を使用しています。ほんの少しの強化:

  • 不要ハードコードするセレクタ(S)
  • はチェックしません。

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

    私は$( '[クラス]')を使用してだと思うが良いですすべてのHTML要素を1つずつ

ここにはexampleがあります。ここで

+0

'div.special> span> a'のようなセレクタがあれば、その最適化は十分に一般的ではありません。 –

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()"を、その 見つかった要素で実行したいものに置き換えます。
関連する問題