Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Раскрывающийся и сворачивающийся по клику div (https://javascript.ru/forum/dom-window/46783-raskryvayushhijjsya-i-svorachivayushhijjsya-po-kliku-div.html)

kefalia 23.04.2014 23:40

Раскрывающийся и сворачивающийся по клику div
 
Добрый вечер! Прошу найти решение задачи.

Есть несколько div, при клике на которые разворачивается скрытый текст:

<div class="view-source"><a href="#></a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source"><a href="#></a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source"><a href="#></a>
<div class="hide">Спрятанный текст</div>
</div>


$(document).ready(function(){                                                  
    $('.view-source .hide').hide();
    $('.view-source a').toggle(
      function(){
        $(this).siblings('.hide').stop(false, true).slideDown(500);
      },
     function(){
        $(this).siblings('.hide').stop(false, true).slideUp(500);
     }
   );
});


Как сделать так, чтобы развернутый div сворачивался при клике на любой из других div'ов - оберток (с классом view-source)? То есть, на один момент времени должен быть открыт только 1 скрытый div.

jsnb 24.04.2014 06:05

Кавычки у атрибутов надо закрывать...
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>
  <body>
<div class="view-source">
  <a href="#">111</a>
  <div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
  <a href="#">222</a>
  <div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
  <a href="#">333</a>
  <div class="hide">Спрятанный текст</div>
</div>

<script>
$(document).ready(function(){                                                  
    $('.view-source .hide').hide();
    $('.view-source a').on('click', function() {
      $('.view-source .hide').slideUp(500);
      $(this).parent().find('.hide').slideDown(500);
    });
});
</script>

  </body>
</html>

kefalia 24.04.2014 09:19

Спасибо! :)

рони 24.04.2014 09:53

jsnb,
нажмите 111 второй раз или поместите дивы в конец длинной страницы ...

Вариант
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>
  <body>
<div class="view-source">
  <a href="#">111</a>
  <div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
  <a href="#">222</a>
  <div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
  <a href="#">333</a>
  <div class="hide">Спрятанный текст</div>
</div>

<script>
$(function(){
    $('.view-source .hide').hide();
    $a = $('.view-source a');
    $a.on('click', function(event) {
      event.preventDefault();
      $a.not(this).next().slideUp(500);
      $(this).next().slideToggle(500);
    });
});
</script>

  </body>
</html>

jsnb 24.04.2014 12:23

Цитата:

Сообщение от рони (Сообщение 309027)
jsnb,
нажмите 111 второй раз или поместите дивы в конец длинной страницы ...

Да, спасибо за замечание.

Александр77 25.04.2016 14:44

Перекидывает на самый верх сайта
 
Здравствуйте, сделал отдельно все работает. Переношу на сайт, при нажатии выбрасывает на верх страницы и div не раскрывается. Думаю дело в ссылке "#" может можно чем-то заменить.Спасибо!

рони 25.04.2016 15:25

Александр77,
может забыли
function(event) {
event.preventDefault(); добавить?

Александр77 25.04.2016 16:35

не работает код
 
проблема в том что у меня на этой странице подключен слайдер и когда я подключаю библиотеку слайдер перестает работать

рони 25.04.2016 16:43

Александр77,
ненадо грузить много версий jquery достаточно одной

Александр77 25.04.2016 16:46

я их заменил и слайдер перестал работать? с чем это может быть связанно


Часовой пояс GMT +3, время: 07:45.