Pergunta

Ok, então em algum lugar, algo está errado. Quando eu estava usando a versão 1.3 do acordeão estava funcionando bem. Quando eu atualizado jQuery para a versão 1.3.2 agora já não funciona como é suposto. Eu preciso a versão mais recente porque ele está resolvendo alguns erros que IE6 estava vomitando ...

Então, aqui está o código, e o que precisa mudar para que ele para trabalhar com a mais recente vesion do jQuery?

$(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 é algo como:

<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>

Devo observar que, onde ele não está funcionando, é que, quando a expansão de um segundo painel, o primeiro painel deve entrar em colapso como normal - mas com 1.3.2 não é o caso ...


* Eu atualizei o HTML com o que eu realmente tinha acontecendo, como parece que era o HTML / CSS que estava dando problemas.

Eu tive o conjunto CSS para:

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

para que ele para dar um "2 de colunas mesa-como" efeito (e para facilitar o cliente-CMS edição - apertar o botão de "bold" e aperte o botão "i") - mas parece que foi essa flutuante dos elementos que fizeram o acordeão não funciona. Quando eu removi o "float: left;" - ele trabalhou novamente como normal.

E isso não tira do fato de que este mesmo set-up trabalhos com jquery1.3.0, mas não com jquery1.3.2 - assim que algo ainda está errado

Foi útil?

Solução

Acredito que sua $(this).next(".accordion div") selector não funcionará. next () única agarra, portanto, o próximo irmão fazendo um filtro que olha para as crianças é estranho.

Além disso, tente usar seletores com um nodeName ao invés de um seletor de classe css puro. Use div.accordian ao invés de apenas .accordian em seus js

Tente

 $(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');

});

Outras dicas

Você pode precisar atualizar sua biblioteca acordeão bem. Alguns seletores de estilo, como os seletores de estilo [@attr] que os usos do acordeão poderia ter sido já obsoletas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top