2013-09-20 2 views
2

Я абсолютный noob для jquery и javascript, и действительно, я просто использую простой код, который я нашел в Интернете. Это создает список аккордеона, но я хотел бы открыть вторую вкладку (или любую вкладку, отличную от первой) при загрузке страницы. Затем, нажав любую другую вкладку, вкладка, открытая по умолчанию, должна быть закрыта.jquery Accordion - как открыть вторую вкладку по умолчанию при загрузке страницы

Это код, я использую:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Document</title> 

<style> 
    .accord-content { display: none; } 
</style> 
</head> 

<body> 
    <div class="accordion"> 
    <div class="accord-header">Header 1</div> 
    <div class="accord-content">This is the content for the first header.</div> 
    <div class="accord-header">Header 2</div> 
    <div class="accord-content">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div> 
    </div> 

</body> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
    $(".accordion .accord-header").click(function() { 
    if($(this).next("div").is(":visible")){ 
    $(this).next("div").slideUp("slow"); 
    } else { 
    $(".accordion .accord-content").slideUp("slow"); 
    $(this).next("div").slideToggle("slow"); 
    } 
    }); 
    }); 
    </script> 
</html> 

Как я могу добиться этого? Простейший, тем лучше.

Спасибо всем заблаговременно.

ответ

6

Вы можете использовать .trigger() для имитации щелчка на нужной вкладке. Это working fiddle.

На вашем JQuery, до конца document.ready:

$(".accordion .accord-header:eq(1)").trigger('click'); 

Так что ваши окончательные JS:

$(document).ready(function() { 
    $(".accordion .accord-header").click(function() { 
     if($(this).next("div").is(":visible")){ 
      $(this).next("div").slideUp("slow"); 
     } else { 
      $(".accordion .accord-content").slideUp("slow"); 
      $(this).next("div").slideToggle("slow"); 
     } 
    }); 
    $(".accordion .accord-header:eq(1)").trigger('click'); 
}); 
+0

спасибо. Как сделать, если мне нужно вставить еще один вариант в аккордеон (заголовок 3, 4, 5 и т. Д.)? – Jackpot

+0

Привет, вы можете просто добавить html-код =) посмотреть на эту обновленную скрипту: http://jsfiddle.net/ngGqA/7/ –

13

Более изящный способ:

$(".selector").accordion({ active: 1 }); 

Хранить в помните, что активное свойство индексируется нулем. 0 представляет собой первую вкладку. 1 - второй.

JQuery doc's are excellent

+0

После этого мыслей вы можете просто добавить «data-slide = 1» в html и затем сделать что-то вроде этого: $ (". selector"). each (function (i, item) {$ (this) .accordion ({active: parseInt ($ (this) .attr ('data-slide'), 10)});}); – Andrew

+0

Каков синтаксис, когда у вас есть 'collapsible: true'? – fatuhoku

+0

@ Андрей, почему, черт возьми, ты хочешь это сделать. Посмотрите, насколько ужасен ваш примерный код. – surfer190