У меня есть аккордеон jQuery от this сайт и отредактирован для моих целей, но аккордеон работает только в Firefox (не Safari или Chrome), и файлы cookie устанавливаются неправильно.Проблема с jQuery аккордеон и cookies
Это JQuery:
function initMenus() {
$('#sidebar .letter_index').hide();
$.each($('#sidebar .letter_index'), function() {
var cookie = $.cookie(this.id);
if (cookie === null || String(cookie).length < 1) {
$('#sidebar .letter_index:first').show();
} else {
$('#' + this.id + ' .' + cookie).next().show();
}
});
$('#sidebar .letter_head').click(function() {
var checkElement = $(this).next();
var parent = this.parentNode.parentNode.id;
if ((checkElement.is('.letter_index')) && (!checkElement.is(':visible'))) {
$('#' + parent + ' .letter_index:visible').slideUp('normal');
if ((String(parent).length > 0) && (String(this.className).length > 0)) {
// not working
$.cookie(parent, this.className);
}
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {initMenus();});
Это как мой HTML выглядит (пункт образец):
<div id="sidebar">
<h2 class="letter_head"><a href="#" class="ABC">ABC</h2>
<ul class="letter_index">
<li>Abc</li>
<li>Bcd</li>
</ul>
</div>
Я не могу найти проблему, почему сценарий не будет работать в Safari и Chrome.
Я также не знаю, как сказать ему, чтобы использовать класс a
внутри h2
в качестве значения cookie. (В настоящее время cookie установлен как $.cookie(parent, this.className);
, который производит файлы cookie с именем container
(div выше #sidebar) и значением letter_head
. Он должен быть чем-то вроде «боковой панели» и «ABC», «DEF» и т. Д.
заранее спасибо!
Блестяще, спасибо! :) Печеньки работают отлично, однако аккордеон все еще не работает в Chrome, Opera или Safari. Edit: Я только заметил, что скрипка работает, но мой скрипт не работает. Проблема должна быть где-то в моем PHP, который генерирует меню, поэтому я смотрю на это :) – rayne
Извините за поздний ответ; Теперь я включил url-переписывание, как/en/about/и т. Д. На мой сайт, и меню больше не работает, потому что файлы cookie установлены для определенных путей. Как я могу установить cookie без учета пути, чтобы меню снова работало по всему сайту? – rayne
Привет, Рейн! Попробуйте изменить эту строку '$ .cookie (sidebar.attr ('id'), headClassName);' to this '$ .cookie (sidebar.attr ('id'), headClassName, {path: '/'});' – Mottie