Javascript.RU

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

Условие jQuery
есть плагин для WordPress:
https://wordpress.org/plugins/bbspoiler/

необходимо сделать, чтобы при разворачивании одного спойлера другие автоматом закрывались. это я реализовал. но не учел того, что в спойлерам могут быть вложенные спойлеры - при открытии вложенного спойлера автоматом закрывается родительский спойлер.

пример такого поведения можно посмотреть тут:
http://www.testwp.ru/bbspoiler/

я с js-скриптами очень на Вы и сам не могу правильно составить условие. может кто помочь?
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2015, 11:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Flector
это я реализовал.
указали бы или показали бы где?
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2015, 11:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Flector,
отмените всплытие клика
jQuery(".sp-head").on('click', function(event){
 *!*      
 event.preventDefault();
*/!*
        $this = jQuery(this);
        if($this.hasClass("unfolded")) {
            $this.removeClass("unfolded");
            $this.next().slideUp("fast");
            $this.next().addClass("folded");
            $this.prop('title', title.unfolded);
        } else {
            $this.addClass("unfolded");
            $this.next().slideDown("fast");
            $this.next().removeClass("folded");
        $this.prop('title', title.folded);
        }
    });
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2015, 22:23
Новичок на форуме
Отправить личное сообщение для Flector Посмотреть профиль Найти все сообщения от Flector
 
Регистрация: 17.07.2015
Сообщений: 4

Сообщение от рони Посмотреть сообщение
Flector,
отмените всплытие клика
что-то не получается. каким в итоге должен быть код?
сейчас он такой:
Код:
jQuery(function(){
    jQuery(".sp-body.folded").hide();

    jQuery(".sp-head").on('click', function(event){
    $this = jQuery(".sp-head");
    if($this.not(this).hasClass("unfolded")) {
        $this.removeClass("unfolded");
        $this.next().slideUp("fast");
        $this.next().addClass("folded");
        $this.prop('title', title.unfolded);
    }
    });

    jQuery(".sp-head").on('click', function(event){
        $this = jQuery(this);
        if($this.hasClass("unfolded")) {
            $this.removeClass("unfolded");
            $this.next().slideUp("fast");
            $this.next().addClass("folded");
            $this.prop('title', title.unfolded);
        } else {
            $this.addClass("unfolded");
            $this.next().slideDown("fast");
            $this.next().removeClass("folded");
        $this.prop('title', title.folded);
        }
    });

    jQuery(".spdiv").on('click', function(event){
    $this = jQuery(this).closest("div.sp-body").prev();
        if($this.hasClass("unfolded")) {
            $this.removeClass("unfolded");
            $this.next().slideUp("fast");
            $this.next().addClass("folded");
            $this.prop('title', title.unfolded);
        }
    });

});
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2015, 22:38
Аватар для jasper-blondin
Аспирант
Отправить личное сообщение для jasper-blondin Посмотреть профиль Найти все сообщения от jasper-blondin
 
Регистрация: 11.07.2015
Сообщений: 33

Вам даже строчку подсветили. Ну как так...

event.preventDefault()
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2015, 22:48
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от рони
отмените всплытие клика
всплытие отменяет
event.stopPropagation();

https://learn.javascript.ru/event-bubbling
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2015, 00:37
Новичок на форуме
Отправить личное сообщение для Flector Посмотреть профиль Найти все сообщения от Flector
 
Регистрация: 17.07.2015
Сообщений: 4

не знаю, что такое всплытие клика, но боюсь это не поможет.
вернее может поможет, но я не знаю как написать условие, чтобы не сворачивался родительский спойлер при кликах на дочерние спойлеры. проблема именно в условии - я уже и parent и children и прочее пробовал, но все не выходит. максимум чего смог добиться, это чтобы сворачивания\разворачиван я дочерних спойлеров не сворачивали родительский - но тогда и внутри родительского спойлера дочерние не сворачиваются.

короче, голова уже пухнет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие к jquery событиям Mir jQuery 5 26.08.2014 14:52
jquery условие для click функции Sergey_dn jQuery 2 02.07.2014 23:56
создать условие jquery face2005 jQuery 3 04.04.2014 12:48
Условие по количеству элементов. (JQuery) Слейп jQuery 2 26.12.2012 15:56
Как задать условие в jquery чтобы он проводил линию.. voloxa89 Элементы интерфейса 7 17.08.2011 10:00