За последние 24 часа нас посетили 16167 программистов и 1667 роботов. Сейчас ищут 964 программиста ...

Сворачивание блока при клике

Тема в разделе "JavaScript и AJAX", создана пользователем times, 28 сен 2012.

  1. times

    times Активный пользователь

    С нами с:
    22 июн 2012
    Сообщения:
    27
    Симпатии:
    0
    Нашел простую функцию для отображения и скрытия блоков,
    но не знаю как доработать, js только начал изучать,
    Так вот какое условие нужно вставить чтобы при клике на заголовок1 открывался блок с текст1 но если открыт блок с текст2 то текст2 закрывался и наоборот, т.е. при клике по одному он открываеться но закрывает другой
    И если возможно подскажите как сделать открытие блоков плавным?
    Код (Text):
    1. <style type='text/css'>
    2. .headline {border: 0px solid #000000; cursor: pointer; text-align: left; text-decoration: underline;}
    3. .hidden {display: none; border: 1px solid #ff0000; text-align: left; margin-top: 2px;}
    4. </style>
    5. <script type="text/javascript">
    6.   function show(ele) {
    7.       var srcElement = document.getElementById(ele);
    8.       if(srcElement != null) {
    9.           if(srcElement.style.display == "block") {
    10.             srcElement.style.display= 'none';
    11.           }
    12.           else {
    13.             srcElement.style.display='block';
    14.           }
    15.       }
    16.   }
    17. </script>
    18. <div class="headline" onclick="show('cat1')"><strong> заголовок1 </strong></div>
    19.     <div class="hidden" id="cat1">
    20.     <p>
    21.         текст1
    22.         </p>
    23.     </div>
    24.     <div class="headline" onclick="show('cat2')"><strong> заголовок2 </strong></div>
    25.     <div class="hidden" id="cat2">
    26.     <p>
    27.          текст2
    28.         </p>
    29.     </div>
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  3. times

    times Активный пользователь

    С нами с:
    22 июн 2012
    Сообщения:
    27
    Симпатии:
    0
    Спасибо но мне не подойдет аккордеон на моем сайте не встроить, дизайн не позволяет, у меня ссылка в одном месте блок открывается в другом)
     
  4. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Используй функции toggle и fadeIn
     
  5. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    если есть jQuery то:
    Код (Text):
    1. $(".headline").click(function(){
    2.     $(".your_class").addClass("hidden");
    3.     $(this).children().eq(1).removeClass("hidden");
    4. });
    Добавлено спустя 4 минуты 49 секунд:
    и не забыть дивам дать класс your_class

    Добавлено спустя 3 минуты 17 секунд:
    плавно
    Код (Text):
    1. $(".headline").click(function(){
    2.     $(".your_class:visible").slideUp();
    3.     $(this).children().eq(1).slideDown();
    4. });
    Добавлено спустя 39 секунд:
    а может и не работает:)
     
  6. -=PAC-MAN=-

    -=PAC-MAN=- Активный пользователь

    С нами с:
    15 май 2012
    Сообщения:
    16
    Симпатии:
    0
    Код (Text):
    1. function oc_usr_menu() {
    2. if(document.getElementById('usr_menu').style.display == 'block'){
    3. document.getElementById('usr_menu').style.display = 'none';
    4. document.getElementById('srch_menu').style.display = 'none';
    5. } else {
    6. document.getElementById('usr_menu').style.display = 'block';
    7. document.getElementById('srch_menu').style.display = 'none';
    8. }
    9. }
    10. function oc_srch_menu() {
    11. if(document.getElementById('srch_menu').style.display == 'block'){
    12. document.getElementById('srch_menu').style.display = 'none';
    13. document.getElementById('usr_menu').style.display = 'none';
    14. } else {
    15. document.getElementById('srch_menu').style.display = 'block';
    16. document.getElementById('usr_menu').style.display = 'none';
    17. }
    18. }
    А запустить скрипт можно так
    Код (Text):
    1. <a href="javascript:oc_usr_menu();">Первое меню</a>
    2. <a href="javascript:oc_srch_menu();">Второе меню</a>
    3. <div id="usr_menu">
    4. Содержимое меню 1
    5. </div>
    6. <div id="srch_menu">
    7. Содержимое меню 2
    8. </div>
    С переменными поиграйте сами. Все.
     
  7. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Тогда уж так
    Код (Text):
    1. $(document).ready(function (){
    2.  $("#example_j a").click(function(){
    3.  $(".slide_j").slideToggle(1000);
    4.  return false
    5.   });
    6. });
    Код (Text):
    1. <style>
    2. #example_j {border:solid 1px #999; margin-bottom:10px; padding:5px; height:70px; min-height:50px}
    3. .slide_j {height:50px; width:100px; float:left; background:#0CF; margin:5px}
    4. </style>
    5. <div id="example_j">
    6. <a href="#">Показать/Скрыть</a>
    7. <div class="slide_j"></div>
    8. <div class="slide_j"></div>
    9. <div class="slide_j"></div>
    10. <div style="clear:both"></div>
    11. <span></span>
    12. </div>
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Я вам не говорил, его встраивать, посмотрите как реализованы действия и сделайте у себя.
    И вообще нет такого, что якобы нельзя встроить, тут из - за рук зависит и мозгов в целом.
     
  9. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    это откроет/скроет все блоки разом
     
  10. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Доработать уже легче, передавать id видимого блока, остальные скрывать
     
  11. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    можно просто проверять видимость
    Код (Text):
    1.  
    2. $(".headline").click(function(){
    3.     if($(this).next().css("display") == "none"){
    4.         $(".your_class:visible").slideUp();
    5.         $(this).next().slideDown();
    6.     }
    7. });
    Добавлено спустя 1 минуту 29 секунд:
    Код (Text):
    1.  
    2. <div class="headline">heaeder1</div>
    3. <div class="your_class">
    4.     item1
    5. </div>
    6. <div class="headline">heaeder2</div>
    7. <div class="your_class" style="display:none;">
    8.     item2
    9. </div>
    Добавлено спустя 2 минуты 26 секунд:
    а вообще, этот велик уже давно есть и ничего изобретать не надо
    Добавлено спустя 45 секунд:
    чет ссылку в цитате не обернуло
     
  12. times

    times Активный пользователь

    С нами с:
    22 июн 2012
    Сообщения:
    27
    Симпатии:
    0
    Ребята Спасибо большое за помощь!
    Пока возможности нет протестировать но в понедельник отпишусь.