2009-08-20 14 views
0

これで、どこかに何か間違っています。私がバージョン1.3を使用していたとき、アコーディオンは正常に動作していました。私がjQueryをバージョン1.3.2にアップグレードしたとき、それはもはやそれが想定どおりに機能しなくなりました。私はIE6が投げていたいくつかのエラーを解決しているので最新バージョンが必要です。jQuery 1.3.2のアコーディオンが動作していない(1.3で動作していた!)

これはコードです

$(function() { 

$(".accordion h4").eq(2).addClass("active"); 
$(".accordion div").eq(2).show(); 
$(".accordion h4").click(function(){ 
    $(this).next(".accordion div").slideToggle("slow") 
    .siblings("div:visible").slideUp("slow"); 
    $(this).toggleClass("active"); 
    $(this).siblings("h4").removeClass("active"); 
}); 
$("div.accordion div").hide(); 
$("h4#open").trigger('click'); 

}); 

HTMLのようなものになる:私はどこで働いていないことに、注意すべき

<div class="accordion"> 

<h4 id="open">Content header</h4> 

<div> 
<ul> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
</ul> 

</div> 

<h4>Content header</h4> 

<div> 
<ul> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
</ul> 

</div> 

<h4>Content header</h4> 

<div> 
<ul> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
<li><strong>Something</strong> <em>Else</em></li> 
</ul> 

</div> 

を、第二パネルを展開するときに、最初のパネルは、通常のように崩壊すべきであるということです - しかし、1.3.2ではそうではありません。

*私は自分のものをそれはHTML/CSSが問題を起こしていたようだ。

が、私はCSSをに設定していた:それは、容易なクライアント-CMSの編集のため(「2-円柱の表のような」効果を与えるために

li strong{display:block;float:left;width:250px;background:#ccc;} 
li em{display:block;float:left;width:700px;background:#ddd;} 

- 「ボールド」ボタンを押すと、 "i"ボタンを押す) - しかし、アコーデオンを機能させない要素が浮かんでいたようです。私が「フロート:左;」を取り除いたとき - それは正常として再び働いた。

jquery1.3.0ではこの同じ設定が機能しますが、jquery1.3.2では機能しないという事実を払拭しません。

+0

は、あなたが(どんなスタイリングなし)ここでは、機能的に動作し、 – redsquare

+0

マークアップは – lnvrt

+0

は私の答えを更新...上記追加されたマークアップを貼り付けることができhttp://pastebin.me/e60983724a0a8dad1ffd2c46f5db71d4 – redsquare

答えて

1

セレクタ$(this).next(".accordion div")は動作しません。 next()は、次の兄弟だけをつかむので、子供を見るフィルターは奇妙です。

また、純粋なcssクラスセレクタではなく、nodeNameでセレクタを使用するようにしてください。いうだけで.accordianあなたのjsの中

より 使用div.accordianは、あなたが同様にあなたのアコーディオンライブラリをアップグレードする必要があるかもしれません

$(function() { 
    $("div.accordion h4").eq(2).addClass("active"); 
    $("div.accordion div").eq(2).show(); 

    $("div.accordion h4").live('click', function(){ 
     var $el = $(this); 
     $el.next() 
      .slideToggle("slow") 
      .siblings("div:visible") 
      .slideUp("slow"); 
     $el.toggleClass("active"); 
     $el.siblings("h4").removeClass("active"); 
    }); 

    $("div.accordion div").hide(); 

    $("h4#open").trigger('click'); 

}); 
+0

ありがとうredsquare(もう一度!) - しかし、それはまだ同じことをやって、何の違いを作っていないようだ... nodeNameを使用するより具体的なルールを使用していますか? – lnvrt

+0

はセレクタを速くするだけです。 – redsquare

+0

.classセレクタは、div.classがgetElementsByTagNameを最初に使用できるすべての要素を検索します。次のdocs - http://docs.jqueryに従って、最初に – redsquare

1

を試してみてください。アコーディオンが使用するスタイルセレクタ[@attr]のようなスタイルセレクタの中には、既に廃止予定のものがあります。

関連する問題