2012-05-02 107 views
0

IE7顯示我的空白div,所以 我想創建一個隱藏div的函數,如果它沒有ul元素。 我有幾個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.filters和div.filters與UI元素在其中

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

你能不能給我們的一個例子html結構? – Paul

回答

0

您可以選擇根據您的DOM元素是否他們有他們使用:has()內的其他具體內容。

所以,你很可能會尋找這樣的事情:

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

您如何使用​​3210雖然我很懷疑。你確定這不是你可以用.cq-colctrl-lt來選擇嗎?

現在,嵌套:not():has()選擇(或一般任何嵌套選擇器)使你的代碼難以閱讀,因此,您可能要考慮拆分,像這樣:

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

沒有.has只顯示,如果ul存在?我想知道這個ul是不是在那裏。如果div'沒有'有一個UL然後做一些事情... – xxx12123

+0

哦,很酷的捕獲。相反,你可以用':not()'子句包裝':has()'子句。更新。 –

+0

它的工作謝謝你! – xxx12123

0

這的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/ –