0

次のような要素を含むドキュメントがあります。

<ul class="fx-startpoint">
    <li>some text</li>
    <li>other text</li>
</ul>

最初に、 で始まるクラスを持つすべての要素を jQuery で調べる必要がありますfx-。これは可能だと思います$("class=^fx-")が、CSSファイルでこの要素に使用できる他のクラスがあるかどうかを調べる必要がありますfx-が、それらは現在要素またはサブ要素に設定されていません(liのように)。

jQuery/jQueryUIでこれを行うにはどうすればよいですか?

4

3 に答える 3

1

セレクターclass=^fx-は次のような要素のみを検索します。

<div class="fx-foo bar">...</div>

...そしてこのようなものではありません:

<div class="bar fx-foo">...</div>

...属性の先頭fx-にが表示されないため。2番目の形式を使用している場合、残念ながら、すべての要素を調べて、クラスがない要素を除外するしかありません。現在、「で始まる単語を含む」のセレクターはありません。fx-xxx

で始まるクラスセレクターを定義するすべてのルールを見つけることに関してはfx-、それを行うことができます。document.styleSheets現在のドキュメントに適用されているすべてのスタイルシートのリストが表示されます。各スタイルシートオブジェクトには、そのオブジェクトに対して定義されたルールのリストがあります(これは、ブラウザの年齢とブランドに応じて、cssRulesまたは単に異なります)。rules各ルール(CSSStyleRuleオブジェクトselectorText)には、ルールの完全なセレクターを提供するなど、ルールに関する情報が含まれます。したがって、そのセレクターを解析して、で始まるクラスルールが定義されているかどうかを確認できますfx-。セレクター(たとえば.foo, .fx-bar { ... })を見るときは、必ずコンマを使用してください。セレクター文字列の解析は、難しいことではありませんが、重要であることに注意してください。

于 2013-02-14T15:17:21.853 に答える
0

OP が投稿した jsFiddle のフォーク: http://jsfiddle.net/mori57/kgqXY/

function GetAppliedCssRules($element) {
    var appliedRules = [];
    for (var x = 0; x < document.styleSheets.length; x++) {
        var rules = document.styleSheets[x].cssRules;
        for (var i = 0; i < rules.length; i++) {
            var txt = rules[i].selectorText;
            if (txt.indexOf('.fx-') > -1) {
                appliedRules.push(txt);
            }
        }
    }
    return appliedRules;
}

具体的には、単純な .indexOf で実行できる .fx- を探すように検索を変更しているだけです。正規表現も可能です(他のいくつかのポスターが言及したように)。

于 2013-02-14T15:31:24.827 に答える
-2
var classList =$('#divId').attr('class').split(/\s+/);

classListはクラスの配列を返します:次に、必要なクラスを繰り返して見つけることができます。

var classList =$('#divId').attr('class').split(/\s+/);
$.each( classList, function(index, item){
if (item === 'someClass') {
   //do something
}
});
于 2013-02-14T15:16:25.013 に答える