jQuery Accordion - 打开页面加载的特定部分

时间:2010-02-04 12:46:45

标签: javascript jquery accordion

我在页面上有一个相当基本的jQuery Accordion实现(使用1.3.2,jQuery UI Core 1.72和jQuery UI Accordion 1.7.2),我希望在页面加载时打开第2部分。我尝试了很多方法,但似乎没有任何工作......

HEAD SCRIPT:

<script type="text/javascript"> $(function() {
    $("#accordion").accordion({
        event: "mouseover"
    });

});

BODY ACCORDION:

<div id="accordion">
<h3><a href="#">Headline 001</a></h3>
<div>
<ul>
     <li><a href="#1">Link 001</a></li>
     <li><a href="#2">Link 002</a></li>
     </ul>
</div>
<h3><a href="#">Headline 002</a></h3>
<div>
     <ul>
    <li><a href="#3">Link 003</a></li>
     <li><a href="#4">Link 004</a></li>
     </ul>
</div>

非常感谢任何帮助!

7 个答案:

答案 0 :(得分:20)

$("#accordion").accordion({ active: 2, event: "mouseover" });

应该做的伎俩!

更新

如果不起作用,请尝试

$("#accordion").accordion({  event: "mouseover" }).activate(2);

(N.B。这个更新有点快,感谢您的评论。说实话,它应该与'active:2'参数一起使用,不知道它为什么没有。)

答案 1 :(得分:10)

打开特定标签的正确方法:

$("#accordion").accordion({
    collapsible  : true,
    active       : false,
    heightStyle  : "content",
    navigation   : true
}); 

设置选项:

//$("#accordion").accordion('option', 'active' , "INSERT YOUR TAB INDEX HERE");
$("#accordion").accordion('option', 'active' , 1);

或者您可以使用这样的哈希:

if(location.hash){

    var tabIndex = parseInt(window.location.hash.substring(1));     
    $("#accordion").accordion('option', 'active' , tabIndex);

}

如果您使用,则投票;)

由于

答案 2 :(得分:8)

以下是否有效?

$(function() {
    $("#accordion").accordion({
        event: "mouseover",
        collapsible: true,
        active: 2
    });

});

答案 3 :(得分:3)

尝试

$("#accordion").activate(index);

答案 4 :(得分:1)

我已经解决了这个问题有点不同,因为我必须创建一个menu.php,其中包括我已经包含的每一页。在我们的项目中有1个手风琴(菜单元素有2个子菜单​​)。因此,当访问者在子菜单上时,手风琴是打开的,并且所选链接(使用CSS而不是jQuery突出显示)处于活动状态。但是当访客在不同的页面上时,手风琴正常工作。

这是javascript:

var containsParams = /teacher|student/i.test(window.location.href), //regexp with string params
accordion = $("li.accordion"); // the accordion as a global

accordion.accordion({ //accordion setup on every page
    animated : !containsParams,
    active : containsParams,
    collapsible : true,
    event : "click",
    header : "h2"
});

//I like to use "self calling methods" since many times I need a main onload event and this way it's clear for every page and my main function still remains
(function () {
    if (containsParams) accordion.accordion("activate", 0);
})();

希望你喜欢它。 =]

祝你好运! =]

答案 5 :(得分:0)

你应该写active: 1而不是2,因为Accordion会将部分从0开始,而不是从1开始。工作代码将如下所示:

$("#accordion").accordion({ active: 1, event: "mouseover" });

希望它会有所帮助。

答案 6 :(得分:0)

正如其他人所提到的,以下内容将使其在开放时起作用:

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

它是active:1,因为它是手风琴指数的第2个{0,1,2,...};由于元素的内容包含字符“2”,因此在其他答案中似乎有些混乱。