Гаразд, так десь, щось не так. Коли я використовував версію 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]
Стилі-селектори, які використовує Акордйон, можливо, вже застаріли.