Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2015, 18:34
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Меню слайдер. Замена hover на click
Здравствуйте.
Сразу скажу, что я в JavaScript новичок, почти ноль. Учусь верстать страницы.
Вставил вот такой слайдер аккордеон на jQuery http://werg.hol.es/2013/12/%D0%B3%D0...y-%D0%B8-css3/
Подскажите , пожалуйста, как сделать, чтобы раскрытие происходило по клику, а не по наведению (hover)? И как сделать по-умолчанию один блок открытым.


$(function() {
    $(‘#accordion > li’).hover(
        function () {
            var $this = $(this);
            $this.stop().animate({‘width’:’480px’},500);
            $(‘.heading’,$this).stop(true,true).fadeOut();
            $(‘.bgDescription’,$this).stop(true,true).slideDown(500);
            $(‘.description’,$this).stop(true,true).fadeIn();
        },
        function () {
            var $this = $(this);
            $this.stop().animate({‘width’:’115px’},1000);
            $(‘.heading’,$this).stop(true,true).fadeIn();
            $(‘.description’,$this).stop(true,true).fadeOut(500);
            $(‘.bgDescription’,$this).stop(true,true).slideUp(700);
        }
    );
});


Этот код понимаю, но...

Заранее спасибо.

Последний раз редактировалось melst, 26.11.2015 в 19:03.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2015, 18:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

melst,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2015, 18:58
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Прошу прощения, но не получается.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2015, 19:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

melst,
нажать
нажать переместить код
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2015, 19:05
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Сообщение от рони Посмотреть сообщение
melst,
нажать
нажать переместить код
Благодарю. А я в ручную тэги писал и ничего...
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2015, 19:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Elegant Accordion with jQuery and CSS3
melst,
ок
$(function() {
                var cur;
                $('#accordion > li').click(
                    function () {
                      if(cur != this){
                        cur && $(cur).click();
                        cur = this;
                        var $this = $(this);
                        $this.stop().animate({'width':'480px'},500);
                        $('.heading',$this).stop(true,true).fadeOut();
                        $('.bgDescription',$this).stop(true,true).slideDown(500);
                        $('.description',$this).stop(true,true).fadeIn();
                      }
                    else {
                        cur = null;
                        var $this = $(this);
                        $this.stop().animate({'width':'115px'},1000);
                        $('.heading',$this).stop(true,true).fadeIn();
                        $('.description',$this).stop(true,true).fadeOut(500);
                        $('.bgDescription',$this).stop(true,true).slideUp(700);
                    }
                    }
                ).eq(1).click(); // 3  2  1  0  первый блок третий
            });
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2015, 19:49
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Спасибо. Попробуем разобраться.
Ответить с цитированием
  #8 (permalink)  
Старый 27.11.2015, 12:13
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Здравствуйте, Рони

$(function() {
                var cur;    // создается переменная
                $('#accordion2 > li').click(    // событие - нажатие на блок li
                    function () {
                      if(cur != this){  // не совсем еще понял что есть this (текущий объект или документ??)
                        cur && $(cur).click();  // присваивается состояние будто нажата кнопка мыши?
                        cur = this;
                        var $this = $(this);
                        $this.stop().animate({'width':'330px'},300);  //с этим все ясно
                       
                        $('.bgDescription',$this).stop(true,true).slideDown(300);
                        $('.description',$this).stop(true,true).fadeIn();
                      }
                    else {
                        cur = null;   // удаляется переменная
                        var $this = $(this);
                        $this.stop().animate({'width':'170px'},300);
                        $('.heading',$this).stop(true,true).fadeIn();
                        $('.description',$this).stop(true,true).fadeOut(700);
                        $('.bgDescription',$this).stop(true,true).slideUp(700);
                    }
                    }
                ).eq(5).click(); // 3  2  1  0  первый блок третий   С эти тоже не разобрался.
            });


Посмотрите, пожалуйста, правильно я хотя бы размышляю в комментариях? Синтаксис, конечно, темный лес для меня))
Ответить с цитированием
  #9 (permalink)  
Старый 27.11.2015, 12:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от melst
// не совсем еще понял что есть this (текущий объект или документ??)
this это li на который нажали
Сообщение от melst
// присваивается состояние будто нажата кнопка мыши?
если кликнут новый li, то закрыть старый до этого нажатый
.eq(5) выбрать нужный li и открыть click()
в коде html li идут слева на право 0, 1, 2, ... но из-за css их порядок визуально наоборот, именно об этом было уточнение.
Сообщение от melst
// удаляется переменная
именно этим обеспечивается закрытие открытие
проверкой тут
Сообщение от melst
if(cur != this){ // не совсем еще понял что есть this (текущий объект или документ??)
Ответить с цитированием
  #10 (permalink)  
Старый 27.11.2015, 13:04
Интересующийся
Отправить личное сообщение для melst Посмотреть профиль Найти все сообщения от melst
 
Регистрация: 26.11.2015
Сообщений: 28

Сообщение от рони Посмотреть сообщение
this это li на который нажали

если кликнут новый li, то закрыть старый до этого нажатый
.eq(5) выбрать нужный li и открыть click()
в коде html li идут слева на право 0, 1, 2, ... но из-за css их порядок визуально наоборот, именно об этом было уточнение.

именно этим обеспечивается закрытие открытие
проверкой тут
Спасибо за подробное объяснение. Давно уже на форумах не встречал столь отзывчивого человека))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
Заменить свойство click на hover, как? denjer Events/DOM/Window 1 06.09.2012 13:28
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36