1

非表示の親が特定のクラスを持たない場合に、非表示の親を持つすべての要素をクエリする単一のセレクターを作成することは可能ですか?

たとえば、以下のHTMLの場合、親が非表示であり、非表示にする親要素に「tab」クラスがないため、Field2のみが選択されます。

<div class="tab" style="display: none;">
    <div>
        <input name="Field1" />
    </div>
    <div style="display: none;">
        <input name="Field2" />
    </div>
</div>
<div class="tab" style="display: none;">
    <div>
        <input name="Field3" />
    </div>
</div>
<div class="tab">
    <div>
        <input name="Field4" />
    </div>
</div>
4

5 に答える 5

0

これはあなたが探しているものですか?

$("div:not(.tab) > *:hidden")

また

$("div:hidden:not(.tab) > *:hidden")

----編集----あなたはこのようにすることができます

$("div[style='display: none;']:not(.tab) > *")

しかし、それは本当に良いアプローチではありません。私はむしろそれらのstyle='display:none;'を変更したいと思います。cssクラスに移動し、次のように実行します。ここでテストしましたhttp://jsfiddle.net/bighostkim/KaaYc/

$("div.noShow:not(.tab) > *")
于 2013-02-07T17:15:36.687 に答える
0
$(':hidden:has(*)').filter(function(){
    return !this.class;
}).find('*').dojQueryFuncHere();

最善の方法ではないと言わざるを得ませんが、「何か」を問い合わせてください-*

于 2013-02-07T16:53:24.393 に答える
0

これはどう?

$('div:not(.tab):hidden input');
于 2013-02-07T16:54:51.107 に答える
0

これを試して:

$("input").filter(function() { 
    var parent = $(this).parent();
    return parent.css("display") == "none" && parent.not(".tab");
}
于 2013-02-07T16:56:32.573 に答える
0

親が非表示の場合、その子孫も非表示と見なされるため、:hiddenセレクターは必要な処理を正確に実行しません。この場合、唯一の方法は実際にstyle属性をチェックすることです。

$("[style*='display: none']:not(.tab) >");

これにより、 (とstyle="display: none"の間のスペースが必要ですが、それを必要とせず、クラスを持たない別のセレクターを作成することもできます。:none.tab

style親がクラスなど以外のものによって隠されている可能性がある場合、これは明らかに機能しません。その場合、スタイルシートを解析して個々の親とそのクラスを検査したい場合を除いて、できることはたくさんありません。

http://jsfiddle.net/ExplosionPIlls/zXmXL/1/

とは対照的$("body :hidden:not(.tab) >")です。bodyすべて<head>がであるため、が使用されます:hidden

http://jsfiddle.net/ExplosionPIlls/zXmXL/3/

于 2013-02-07T16:56:51.213 に答える