Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно открыть первый спойлер при загрузке (https://javascript.ru/forum/misc/54284-nuzhno-otkryt-pervyjj-spojjler-pri-zagruzke.html)

karakym 11.03.2015 17:15

Нужно открыть первый спойлер при загрузке
 
Есть код спойлера!
$(document).ready(function(){
    $('.splLink').click(function(){
      $('div.splCont').not($(this).parent().children('div.splCont')).slideUp('normal');
      $(this).parent().children('div.splCont').slideDown('normal');
      return false;
    });
  });

После загрузки страницы все спойлеры закрыты!
<div class="splLink">1</div>
<div class="splCont">текст 1</div>
<div class="splLink">2</div>
<div class="splCont">текст 2</div>
<div class="splLink">3</div>
<div class="splCont">текст 3</div>

нужно что бы первый спойл открылся после загрузки!
Приблизительно понимаю, что нужно выбрать first.child(splCont) и сделать .slideUp(first.child(splCont)
но так как синтаксис не знаю и прошу вашей помощи!

karakym 11.03.2015 17:32

Попробовал так!
$(document).ready(function(){
  $('div.splCont:first-child').slideUp('normal');
    $('.splLink').click(function(){
      $('div.splCont').not($(this).parent().children('div.splCont')).slideUp('normal');
      $(this).parent().children('div.splCont').slideDown('normal');
      return false;
    });
  });

Но результата не получил(

Skipp 11.03.2015 17:41

$('.splLink').first().click()

karakym 11.03.2015 17:58

Цитата:

Сообщение от Skipp (Сообщение 360766)
$('.splLink').first().click()

Не помогло :stop:
$(document).ready(function(){
  $('.splLink').first().click()
    $('.splLink').click(function(){
      $('div.splCont').not($(this).parent().children('div.splCont')).slideUp('normal');
      $(this).parent().children('div.splCont').slideDown('normal');
      return false;
    });
  });

karakym 11.03.2015 18:38

Проблему решил!
$(document).ready(function(){
  $('div.splCont').first().slideDown('normal');
    $('.splLink').click(function(){
      $('div.splCont').not($(this).parent().children('div.splCont')).slideUp('normal');
      $(this).parent().children('div.splCont').slideDown('normal');
      return false;
    });
  });

Всем спасибо!

ruslan_mart 11.03.2015 18:38

Бедный браузер. :) Всего лишь один клик и юзается столько методов, которые внутри используют ещё кучу методов и парсеров. :-?

karakym 11.03.2015 18:57

Цитата:

Сообщение от Ruslan_xDD (Сообщение 360787)
Бедный браузер. :) Всего лишь один клик и юзается столько методов, которые внутри используют ещё кучу методов и парсеров. :-?

Вы можете предложить упрощенную версию сиго чуда?

ruslan_mart 11.03.2015 19:18

karakym, может и смогу, сначала опиши, что там у тебя вообще за скрипт и что должен делать? Простая система спойлеров, которые плавно открываются/закрываются?

рони 11.03.2015 21:36

karakym,

решение Skipp, рабочее только вы его неправильно использовали -- кликать надо после того как клик назначен

karakym 11.03.2015 21:47

короче, это спойлер-гармошка, пример тут
он должен открывать один споил и закрывать при этом предыдущий!
Мне нужно было только, что бы при загрузке страницы он открыл первый споил!

ruslan_mart 12.03.2015 14:58

Вариант на скорую руку. ;)

http://learn.javascript.ru/play/fqkLOb

<!DOCTYPE HTML>
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>  
    <style type="text/css">
      .spoiler:not(:first-child) > div {
          display: none;
       }
    </style>
  </head>
  <body>
    
    <section class="spoiler">
      <a href="#">Спойлер 1</a>
      <div>короче, это спойлер-гармошка, пример тут
он должен открывать один споил и закрывать при этом предыдущий!
Мне нужно было только, что бы при загрузке страницы он открыл первый споил!</div>
    </section>
    
    <section class="spoiler">
      <a href="#">Спойлер 2</a>
      <div>короче, это спойлер-гармошка, пример тут
он должен открывать один споил и закрывать при этом предыдущий!
Мне нужно было только, что бы при загрузке страницы он открыл первый споил!</div>
    </section>
    
    <section class="spoiler">
      <a href="#">Спойлер 3</a>
      <div>короче, это спойлер-гармошка, пример тут
он должен открывать один споил и закрывать при этом предыдущий!
Мне нужно было только, что бы при загрузке страницы он открыл первый споил!</div>
    </section>
    

    <script type="text/javascript">
      $(function() {
        var activeSpoiler = $('.spoiler:first > a');
        $(document).on('click', '.spoiler > a', function() {
          var self = $(this)
          if(this == activeSpoiler[0]) self.next().slideToggle();
          else {
            activeSpoiler.next().slideUp();
            self.next().slideDown();
            activeSpoiler = self;
          }
        });
      });
    </script>

  </body>
</html>

karakym 12.03.2015 15:15

Цитата:

Сообщение от Ruslan_xDD (Сообщение 360918)
Вариант на скорую руку. ;)

http://learn.javascript.ru/play/fqkLOb

Хороший вариант, спасибо!
А мог бы ты пожалуйста, подогнать мне его под <tr>
Вот у меня можно увидеть, что жмется только средний столбик для открытия спойлера, а пользователи пытаются нажимать на строку <tr></tr> полностью и иногда из за этого заблуждаются и уходят!

ruslan_mart 12.03.2015 15:18

karakym, ну так просто вставляй спойлер в ячейку. :)

рони 12.03.2015 15:33

karakym,
$(document).ready(function() {
    var tr = $('.table-wrapper tbody tr');
    tr.click(function() {
        tr.not(this).find('.splCont').slideUp('normal');
        $('.splCont', this).slideToggle('normal')
        return false;
    }).eq(0).click();
});

karakym 12.03.2015 19:21

Цитата:

Сообщение от рони (Сообщение 360923)
karakym,
$(document).ready(function() {
    var tr = $('.table-wrapper tbody tr');
    tr.click(function() {
        tr.not(this).find('.splCont').slideUp('normal');
        $('.splCont', this).slideToggle('normal')
        return false;
    }).eq(0).click();
});

Это крутой вариант спасибо!:dance:


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