Страница 1 из 3

Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 15:08
Maximus_Decimus
Приветствую уважаемые участники.

Возможно моя проблема тривиальна, но, так как имею мало опыта работы с jQuery прошу вас о помощи.
Использую на сайте виджет Accordion для меню с настройками collapsible: true, т.е каждый пункт можно свернуть и развернуть.

Задача состояла в том, что при сворачивании и разворачивании пункта меню нужно подгружать различные страницы через Ajax. Был успешно написан код и повешен на событие .toggle. Проблема заключается в том, что при добавления данного события пункты меню перестали сворачиваться-разворачиваться при клике.

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 19:42
zandroid
что-то я не нашёл в доках описания такого события...

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 19:50
Maximus_Decimus

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 20:08
zandroid
Ага, понял. Просто у аккордиона есть ещё и собственные события, думал, речь про них. Тогда код цитируй, а то не понятно в чём может быть дело.

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 20:43
Maximus_Decimus
Пожалуйста, вот код:

Код: выделить все
var link3=jQuery("#accordion h3 a");
jQuery.each(link3, function(){
   jQuery(this).toggle(
       function(){
        jQuery('#main_search').fadeTo("slow", 0.01);
      jQuery.ajax({
            type: "POST",
            url: jQuery(this).attr('href'),
            data: "&tmpl=barebones",
            dataType: 'HTML',
            success: function (data){
                jQuery('#main_search').html(data);
            customFadeTo('#main_search');
            }         
        });
        },
        function(){
        jQuery('#main_search').fadeTo("slow", 0.01);
      jQuery.ajax({
            type: "POST",
            url: "http://global-group.com.ua/index.php?option=com_virtuemart",
            data: "&tmpl=barebones",
            dataType: 'HTML',
            success: function (data){
                jQuery('#main_search').html(data);
            customFadeTo('#main_search');
            }         
        });
        });
       });


вот сайт http://global-group.com.ua/
Код временно отключен, тестирую в консоли.
Суть в том, что когда юзер нажимает на пункт меню в аккордионе - тот разворачивается и подгружается страница данной категории, при повторном нажатии - пункт сворачивается и обратно подгружается главная страница каталога.

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 21:18
EGORR
Не по теме...
При раскрытии подменю делает скачок, вероятно из-за разницы с заменяемых стилях. Неприятно смотрится...
И ты забыл
Код: выделить все
a:hover,
a:active,
a:focus
{
outline:none;
}

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 21:46
Maximus_Decimus
я к css еще даже не прикасался. это все сырое, сейчас важен код, потом внешний вид.

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 22:06
zandroid
У меня аккордион работает, а вот события в toggle как раз не возникают (IE8, FF, Chrome).

По коду замечание: незачем перебирать найденные элементы с помощью .each(), можно сразу написать jQuery("#accordion h3 a").toggle( ... );

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 22:19
Maximus_Decimus
Замечание принято, избыточный элемент ))

Код сейчас отключен, как я говорил, можете запустить через консоль Firebug.

По теме, кто-то может подсказать почему не работает accordion?

Re: Accordion. Событие .toggle

СообщениеДобавлено: 01 фев 2011, 22:57
Gennady
Maximus_Decimus писал(а):По теме, кто-то может подсказать почему не работает accordion?

Сказать почему именно не возьмусь, но только знаю, что на все вопросы подобного рода (не на вопросы даже, а скорее на попытки выжать из accordion'а, что-то "лишнее") разработчики UI отвечают примерно следующее: "Это не то, для чего предназначен виджет, поэтому используйте для создания нужного Вам функционала другой код".... :)
Не буду обсуждать их позицию, как говориться, за что купил - за то и продаю...
Если Вам не критична ситуация, что в accordion'е в каждый момент времени может быть открыта только одна секция, то может быть поступить проще? Попробуйте ради эксперимента...