2012-05-02 8 views
0

IE7は私の空のdivを示します。 ul要素がない場合はdivを非表示にする関数を作成します。 私はこのセレクタが適用されるいくつかのdivを持っています:'div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters ul' すべてのdivを個別にチェックする必要があります。私もこの方法を試してみましたie7の空のdivを非表示にします。

function update() { 
    if (('div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters ul') == 0) { 
     $('div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters li').closest('div.parsys_column').hide(); 
    } 
} 

が、これはそれらに

$('div.Home_filter_par div[class*="cq-colctrl-lt"] 
div.filters:empty').closest('div.parsys_column').hide(); 
+0

あなたは私たちの例を与えることができます:あなたはこのように分割を検討する必要がありますので、今、:not():has()セレクタ(または一般に任意のネストされたセレクター)を入れ子に

は、読みあなたのコードが難しくHTML構造ですか? – Paul

答えて

0

あなたは、彼らが:has()を使用して内部の他の特定の要素を持っているか否かに基づいて、DOM内の要素を選択することができます。

ですから、おそらくこのような何かを探していると思います:

$('div.parsys_column:not(:has(div[class*="cq-colctrl-lt"] div.filters ul))').hide(); 

私はあなたが​​3210を使用しているか質問したいが。代わりに.cq-colctrl-ltで選択できるものではないと確信していますか?

$('div.parsys_column') 
    .not(':has(div[class*="cq-colctrl-lt"] div.filters ul)') 
    .hide() 
    ; 
+0

ulが存在する場合のみ表示されますか?私はulがそこにないかどうか調べたい。 div 'がulを持っていない場合は、何かをしてください... – xxx12123

+0

ooh、cool catch。これを逆にするには ':has()'句を ':not()'句で囲むだけです。更新する。 –

+0

ありがとうございました! – xxx12123

0

これをUL要素の両方の空div.filtersとdiv.filtersが含まれていてもdivを非表示にします。これは動作しません。スタイルシートを作成/添付してください。

<!--[if IE7]> <link href="styles/ie7.css" rel="stylesheet" type="text/css"> <![endif]--> 

このようなものを入れてください。

div { 
visibility: hidden; 
} 
div.yourclass { 
visibility: hidden; 
} 
+0

HTML条件付きコメントを使用すると、意外にもIE8の予期しないパフォーマンスの問題が発生する可能性があります。 http://webforscher.wordpress.com/2010/05/20/ie-6-slowing-down-ie-8/ –

関連する問題