Javascript.RU

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

Переключение активных элементов
Добрый день.

Есть структура:
<div class="all">
  <div class="frst">
    <div class="head"><h6>Click</h6></div>
    <div class="bood">info</div>
  </div>
  <div class="scnd">
    <div class="head"><h6>Click</h6></div>
    <div class="bood">info</div>
  </div>
</div>


Т.е. разные блоки, у которых при клике на h6 происходит toggleClass('closed'), я хочу сделать так что бы при клике на .frst h6 добавлялся класс к .frst .dood, а при клике на .scnd h6 предыдущее событие обнулялось и класс теперь добавлялся к .scnd .bood и так далее по списку.

Просто сделать появление блока именно по клику на селектор в одном родителе получилось:
$('h6').on( "click", function() {
		$('h6').parent().parent().find('.bood').toggleClass('closed');
	});


Подскажите пожалуйста, как сделать что бы при клике на другой селектор, предыдущее событие обнулялось?

Делал похожее со списком пунктов:
$('li').on('click', function() {
        change_active($(this));
        return false;
    });

    function change_active(current) {
    	$('.full_cart .mails li').removeClass("active");
    	current.addClass("active");
        $('.full_cart .mails .send').attr('href', ($('.full_cart .mails li.active').attr('title')));
    }


Но не могу додуматься как правильно интерпретировать для этого случая.

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2017, 12:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

emptyindorill,
https://javascript.ru/forum/misc/639...tml#post421800
и таких примеров более 300, искать открывашка
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2017, 13:55
Аспирант
Отправить личное сообщение для emptyindorill Посмотреть профиль Найти все сообщения от emptyindorill
 
Регистрация: 16.02.2012
Сообщений: 73



Спасибо, но это немного не то.
У меня не аккордион, уж про такое (UI) я знаю.
У меня другая структура кода, и предлагаемый вариант мне не подходит.

<div class="obertka">
    <div class="small_cart">
        some code
        <h6>Контакты</h6>
    </div>
    <div class="full_cart closed">
        some code
    </div>
</div>
<div class="some_parent_lvl1">
    <div class="obertka">
        <div class="small_cart">
            some code
            <h6>Контакты</h6>
        </div>
        <div class="full_cart closed">
            some code
        </div>
    </div>
    <div class="some_parent">
        <div class="obertka">
            <div class="small_cart">
                some code
                <h6>Контакты</h6>
            </div>
            <div class="full_cart closed">
                some code
            </div>
        </div>
    </div>
</div>


И элементы разнятся довольно таки сильно.
Единственное что едино - какая то оболочка двух активных блоков.
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2017, 14:15
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
.closed { display:none; }
</style>
<div class="obertka">
    <div class="small_cart">
        some code
        <h6>Контакты</h6>
    </div>
    <div class="full_cart closed">
        more some code
    </div>
</div>
<div class="some_parent_lvl1">
    <div class="obertka">
        <div class="small_cart">
            some code
            <h6>Контакты</h6>
        </div>
        <div class="full_cart closed">
            more some code
        </div>
    </div>
    <div class="some_parent">
        <div class="obertka">
            <div class="small_cart">
                some code
                <h6>Контакты</h6>
            </div>
            <div class="full_cart closed">
               more some code
            </div>
        </div>
    </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
   $('h6').on( "click", function() {
        $('h6').parent().parent().find('.full_cart').addClass('closed');
        $(this).parent().parent().find('.full_cart').removeClass('closed');
    })
</script>

Последний раз редактировалось Dilettante_Pro, 29.11.2017 в 15:01.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2017, 14:58
Аспирант
Отправить личное сообщение для emptyindorill Посмотреть профиль Найти все сообщения от emptyindorill
 
Регистрация: 16.02.2012
Сообщений: 73

Сообщение от Dilettante_Pro Посмотреть сообщение
Dilettante_Pro
Спасибо Dilettante_Pro.

Я так пробовал - у меня не получилось так.
Эти два события одновременно выполнялись - в инспекторе просто подсветка кода мигала и класс одновременно удалялся и добавлялся.

Наверное это от версии js зависит?
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2017, 15:04
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от emptyindorill
от версии js зависит?
Имеете в виду версию jQuery? Ну не знаю - поменял в примере 1.12.4 на 1.7.1 - работает точно так же.
А покажите ваш вариант?
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2017, 16:53
Аспирант
Отправить личное сообщение для emptyindorill Посмотреть профиль Найти все сообщения от emptyindorill
 
Регистрация: 16.02.2012
Сообщений: 73

Сообщение от Dilettante_Pro Посмотреть сообщение
А покажите ваш вариант?
Корпоративный портал в интранете...

Вот
Ответить с цитированием
  #8 (permalink)  
Старый 29.11.2017, 16:55
Аспирант
Отправить личное сообщение для emptyindorill Посмотреть профиль Найти все сообщения от emptyindorill
 
Регистрация: 16.02.2012
Сообщений: 73

Прошу прощения.

Получилось

Не увидел разницу в селекторах.

Сейчас проверю у себя.
Ответить с цитированием
  #9 (permalink)  
Старый 29.11.2017, 16:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Как говорится, найдите одно отличие.
Ваш вариант
$('.opening').on( "click", function() {
		$(this).parent().parent().find('.full_cart').addClass('closed');
 		$(this).parent().parent().find('.full_cart').removeClass('closed');
	});

Мой вариант
$('h6').on( "click", function() {
        $('h6').parent().parent().find('.full_cart').addClass('closed');
        $(this).parent().parent().find('.full_cart').removeClass('closed');
    })
Ответить с цитированием
  #10 (permalink)  
Старый 29.11.2017, 17:01
Аспирант
Отправить личное сообщение для emptyindorill Посмотреть профиль Найти все сообщения от emptyindorill
 
Регистрация: 16.02.2012
Сообщений: 73

Да, всё работает.

Спасибо большое за подсказку.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает переключение элементов в слайдере gummet jQuery 0 20.11.2013 12:08
запретить изменение количество элементов в списке Antistas jQuery 0 05.12.2012 14:05
Получить список ВСЕХ элементов DOM Почемучкин Events/DOM/Window 7 16.04.2012 11:33
Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов Ирина Владимировна Общие вопросы Javascript 10 24.03.2012 18:18
Переключение с изменением элементов olegggI Элементы интерфейса 3 02.12.2011 23:27