2012-04-20 1 views
1

jqueryのslideToggleを使用して、メニューに単純な展開/折りたたみを実装しようとしています。私はいくつかの重要な宣言、特に可視性:目に見える!重要な宣言を持つCSSファイルに触れることができない(サーバーで呼ばれる)いくつかのCSSファイルを持っているモンスター企業のWebサイトで働いています。表示:ブロック!重要; 。 これらの宣言は、slideToggleのメカニズムを妨害します。アニメーションはありますが、メニューが終了した時点で「展開された」状態に戻ります。 jsfiddlehttp://jsfiddle.net/h2PVT/ここはかなり明確です。ここでは、コードのインラインです:CSSで重要なのためにexpand collapseをアニメーション化できません

<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

質問は正常に動作しますか?そのキーワードの使用は非常に非常に限られているべきであり、私はそれが必要であるとは思わない。一般的に、あなたのCSSを見直して、特異性を使用するべきです。とにかく、CSSの残りの部分がなくても、最終的にCSSを変更する方法を伝えるのは難しいです。 –

+0

彼はファイルを変更することができないので、彼はそれらを作ったのか疑問に思います。 –

+0

神様、私はそのCSSを作っていませんでした。私はウェブサイトが作られた後ずっとプロジェクトに着いた。そのサーバーサイドのコードに基づいて20のウェブサイトがあるので、それを変更すると何十人ものウェブマスターと修正が関係するはずだ。: –

答えて

1

Iあなた自身の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を介して余分なクラスを追加することでそれに取り組んでいると思う:)拡張アニメーションはフェードしていないが、私はそれを働かそうとするだろう..もしあなたが私にチップを与える理由があれば:)そうでなければ、 ! –

+0

実際に私は理由を知っていると思う:クラスを最初にトグルしてから滑り止めをする方法はありますか? –

+0

これは、契約するときにアニメーション化されないようにするだけです。アニメーションを作成する前に、このクラスを削除する必要がある場合、このクラスが適用されているかどうかを検出するコードをもう少し作成する必要があります。適用されていない場合は、アニメーションの後に追加する必要があります。それは理にかなっていますか? –

0

ブラウザ!importantセレクタ特異性であるそのうちの2つの要素based on a number of criteria、に適用するものCSSルールセットを決定します。私は完全にはわかりませんが、より具体的なセレクタ(例:ul.AspNet-Menu ul.someClass)を使用して!importantを打つことができると考えています。

これを除いて、同じように重要なルールセットを置いてCSSを上書きすることをお勧めします。これは、静的サーバーCSSの後に解釈されるルールセットでなければなりません。

ここではこれはすべてテストされていないので、私はここで理論作成しているので、自分で調べてみてください。 :)

+0

私はこれを試しましたが、うまくいきませんでした。 –

+0

新しいもので!importantをクラッシュしようとすると、とにかくslideToggleに再び干渉してしまいます。それは悪循環です.. –

-1

ここには重要な理由があります!あなたはそれを取ると、あなたのセレクタからvisibiltyルールを削除する場合:!なぜあなたが使用して行う `important`:それは

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

+1

私が説明したように、私は(削除または修正)このCSSは、サーバー側のように:( –

関連する問題