2012-02-27 15 views
3

CSSプロパティでDOMエレメントを選択できますか?例えばJavaScriptのCSSプロパティでエレメントを選択

awsome_function ({'background-color' : '#0cf'}); 
// return all object, which's background-color css attribute value is '#0cf' 

awsome_function (['background-color']); 
// return all object, which has background-color css attribute 

awsome_function (['-my-special-cssattribute']) 
// return all object, which has '-my-special-cssattribute' css attribute 

私はこのように、jQueryのeach方法を使用して要素を選択することが可能であることを知っている:それは多分遅いとunelegantだが

$('*').each(function(){ 
    if($(this).css('-my-special-cssattribute')) { 
     /* do something */ 
    } 
}) 

。それを行うためのよりクールな方法はありますか?

答えて

4

は、私は、カスタムセレクタを使用します。

$.extend($.expr[":"], { 
    foo: function (e) { 
     return $(e).css('background-color') == '#0cf'; 
    } 
}); 

使用法:

alert($('div:foo').size()); //get the count of all the divs that matches the selector 
+0

私はそれが大好きです。その 'foo'をパラメータ化する方法はありますか?たとえば、$( 'div:foo( "background-color"、 "#0cf")') –

+1

@NagyMárton必要な要素を返す関数の内部に、この種のロジックを保持することをお勧めします。条件を追加したい場合は、 '&&'を使用してください。 – Johan

+0

ありがとうございます! –

0

私は、さまざまな背景色で異なるクラスを追加することを提案します。次にそれらを選択することができます。それは多分遅いとunelegantだが

それとも、(の.cssを試みることができる) http://api.jquery.com/css/

+0

答えのためのTHXしかし、私は、グローバルフォールバック・ライブラリーのために、高速のフィルタリングのいくつかの種類を使用します。たとえば、私は-spec-border-radius CSSプロパティを追加しました。これは、どのブラウザーでもそのオブジェクトの丸い角を追加するメソッドを呼び出します。 –

+0

私はこれをやっているのはかなり解決策だとは思わない。 Mozilla、Webkit、IE9 +にはボーダー半径があり、IE 8の場合はイメージを使用する必要があります。 – bytecode77

1

。それを行うためのよりクールな方法はありますか?

遅いです。それは不愉快です。それをしないでください。 IDを持つ要素、つまりを最終的にはのクラスで選択しますが、そのような方法はありません。真剣に。

+0

は、クラスおよび/またはCSSのプロパティによって選択すると、jQueryがDOMツリー全体を解析することを明確に指摘する必要があります。 (ほとんどのブラウザで)すべてのJS実装でサポートされている唯一の直接*(手段:高速)セレクタはIDセレクタです。 – Kaii

+0

これは「最終的に」イタリック体である理由:-)。しかし、彼の場合、すべての要素をクラスで選択することは良い考えです(クラスが背景を追加すると仮定します)。 –

+0

私はあなたの言うことに同意しますが、質問に答えません。 – hooleyhoop

-1

回答:これを行う方法はありません。理由があります。 それは非常に遅く、それはむしろ不気味より悪いです。

Personnaly、私はいつか私の開発者の一人がそれをするのを見たら、私は彼を殺し、または私の上司にすぐに彼を置き換えるように頼むでしょう。

クラスを使用するか、多くのベットIDを使用してください!できない場合は、アプリケーション構造ロジックから問題が発生します。

関連する問題