/ / Гармонія в jQuery 1.3.2 не працює (працювала в 1.3!) - jquery, accordion, expand, collapse, jquery-1.3.2

Гармонія в jQuery 1.3.2 не працює (працювала в 1.3!) - jquery, accordion, expand, collapse, jquery-1.3.2

Гаразд, так десь, щось не так. Коли я використовував версію 1.3, гармоній працював добре. Коли я оновив версію jQuery до версії 1.3.2, вона більше не працює, як це передбачалося. Мені потрібна остання версія, оскільки вона вирішує деякі помилки, які IE6 кинув ...

Отже, ось кодекс і що потрібно змінити, щоб він працював з 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 виходить щось на зразок:

<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 з тим, що я дійсно продовжував, як здається, це був HTML / CSS, який давав проблеми.

Я мав налаштування CSS:

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

для того, щоб дати "2-колосовану таблицю"ефект (і для зручного редагування клієнт-CMS - натиснути "сміливу" кнопку і натиснути кнопку "i") - але, схоже, саме це плавання елементів, які зробили акордеон не працюють. Коли я видалив "float: left;" - він знову працював як звичайно.

І це не знімає з того факту, що ця ж настройка працює з jquery1.3.0, але не з jquery1.3.2 - так що щось все одно є неправдою!

Відповіді:

1 для відповіді № 1

Я вірю ваш селектор $(this).next(".accordion div") не буде працювати наступний () лише захоплює наступного брата, тому робить фільтр, який дивиться на дітей, непарний.

Також спробуйте використовувати селектори з ім'ям вузла, а не чистим селектором класів CSS. Використовуйте div.accordian а не просто .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");

});

1 для відповіді № 2

Можливо, вам доведеться оновити свою бібліотеку Аккордеону. Деякі стилі-селектори, як [@attr] Стилі-селектори, які використовує Акордйон, можливо, вже застаріли.