2012-04-20 38 views
1

我試圖用jQuery的slideToggle在菜單中實現一個簡單的展開/摺疊。我正在一個怪物公司網站工作,該網站有一些我們無法觸及的CSS文件(在服務器中調用),其中包含幾個!重要聲明的CSS文件,特別是可見性:visible!important;並顯示:block!important; 。 這些聲明會干擾slideToggle的機制,雖然有動畫,但它結束菜單的時刻會跳回到「展開」狀態。在這裏很清楚,在jsfiddlehttp://jsfiddle.net/h2PVT/。這也是內聯代碼:無法動畫擴展崩潰由於!重要的CSS

<div class="AspNet-Menu-Vertical" id="zz1_CurrentNav"> 
     <ul class="AspNet-Menu"> 
      <li class="AspNet-Menu-Leaf"> 
       <a href="/dg/ias/whoweare/Pages/whoweare.aspx" class="AspNet-Menu-Link"> 
        Who we are</a> 
      </li> 
      <li class="AspNet-Menu-WithChildren AspNet-Menu-Selected"> 
       <a href="/dg/ias/whatwedo/Pages/Whatwedo.aspx" class="AspNet-Menu-Link AspNet-Menu-Selected"> 
        What we do</a> 
       <ul> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/Pages/Agencies.aspx" class="AspNet-Menu-Link" title="Agencies"> 
          Audit in Agencies</a> 
        </li> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/Pages/Commission.aspx" class="AspNet-Menu-Link" title="Audit in the Commission"> 
          Audit in the Commission</a> 
        </li> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/reports/Pages/Home.aspx" class="AspNet-Menu-Link" title="IAS reports"> 
          Our Reports</a> 
        </li> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/Pages/Listofportfolios.aspx" class="AspNet-Menu-Link" title="List of portfolios"> 
          List of portfolios</a> 
        </li> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/Pages/ITAudit.aspx" class="AspNet-Menu-Link" title="IT Audit"> 
          IT Audit</a> 
        </li> 
        <li class="AspNet-Menu-Leaf"> 
         <a href="/dg/ias/whatwedo/Pages/GRC.aspx" class="AspNet-Menu-Link" title="Description of the audit tool GRC"> 
          Our Audit Tool: GRC</a> 
        </li> 
       </ul> 
      </li> 
      <li class="AspNet-Menu-Leaf"> 
       <a href="/dg/ias/knowledgesharing/Pages/Home.aspx" class="AspNet-Menu-Link"> 
        Knowledge Sharing</a> 
      </li> 
      <li class="AspNet-Menu-Leaf"> 
       <a href="/dg/ias/tools/Pages/Home.aspx" class="AspNet-Menu-Link" title="Tools and procedures"> 
        Tools &amp; Procedures</a> 
      </li> 
     </ul> 

</div> 

的JS使用:

$('.AspNet-Menu-WithChildren a').click(function(e) { e.preventDefault(); 
    $('.AspNet-Menu-WithChildren ul').slideToggle('slow', function() { 
    }); 
}); 

是干擾的CSS(我想有更多的,但..我想這就夠了)

ul.AspNet-Menu ul { 
visibility: visible !important; 
} 

ul.AspNet-Menu ul { 
display: block !important; 
} 
+0

的問題是:你爲什麼用'important'?該關鍵字的使用應該非常有限,對於這樣的事情我不認爲這是必要的。你通常應該檢查你的CSS,而不是使用特異性。無論如何,沒有CSS的其餘部分,很難告訴你如何最終改變它。 – 2012-04-20 10:00:15

+0

他無法更改文件,所以我懷疑他是否製作了它們。 – 2012-04-20 10:04:58

+0

上帝不,我沒有製作CSS。我在網站建立很久以後就到達了這個項目,並且有20個網站基於這個服務器端代碼,所以改變它就必須牽連數十個網站管理員和修復程序。:( – 2012-04-20 10:28:00

回答

1

我打賭你可以包括一些你自己的CSS。找到一個方法來做到這一點,使風格:

html body .importantHide { display:none!important;} 

做的JavaScript這樣的:

$('.AspNet-Menu-WithChildren a').click(function(e) { 
    e.preventDefault(); 
    $('.AspNet-Menu-WithChildren ul').slideToggle('slow', function() { 
     $(this).toggleClass('importantHide'); 
    }); 
});​ 

這將添加一個類,使其留下隱患。你可能不得不改變一些東西,使它看起來不錯。你可以自己做。如果沒有,請問!

這裏是的jsfiddle:http://jsfiddle.net/Allan/h2PVT/2/

+0

這似乎是解決方案!Didn不要認爲通過我的JS添加額外的類來「解決」它:)擴展動畫不會消失,但我會盡力解決這個問題。如果你有任何想法,爲什麼給我一個提示:)否則, ! – 2012-04-20 10:19:44

+0

其實我覺得我知道爲什麼:有沒有一種方法,首先切換類,然後做的slideToggle? – 2012-04-20 10:22:30

+0

這隻會使合約時不生成動畫。如果必須刪除它,但是在製作動畫之前,您必須製作更多的代碼來檢測是否應用了此類。如果未應用,則必須在動畫後添加它。那有意義嗎? – 2012-04-20 10:25:44

0

瀏覽器確定應用到一個元素based on a number of criteria,其中兩個是!important和選擇特異性什麼CSS規則集。我不完全確定,但我認爲你可以通過使用更具體的選擇器(例如ul.AspNet-Menu ul.someClass)擊敗!important

除此之外,您可能希望嘗試通過放置同樣重要的規則集來覆蓋CSS。這必須是在靜態服務器CSS後解釋的規則集。

ul.AspNet-Menu ul { 
    visibility : inherit !important; 
    display : inherit !important; 
} 

現在這是所有未經測試,我只是理論,各具特色的在這裏,所以你可能要檢查它自己。 :)

+0

,並沒有奏效。 – 2012-04-20 10:10:46

+0

如果試圖粉碎!importants用新的,你剛剛結束了與的slideToggle再幹擾反正..這是一個惡性循環... – 2012-04-20 10:21:17

-1

是否有一個原因,您正在使用!重要的是這裏。如果你把它拿出來,並從您選擇刪除公開程度規則:它工作正常

http://jsfiddle.net/ollie/8MRA5/

+1

,我在描述說,我不能碰(刪除或修改)這個CSS,因爲它的服務器端:( – 2012-04-20 10:15:09