jQuery手风琴由url激活?

时间:2010-11-13 08:34:42

标签: javascript jquery-ui accordion

标题脚本部分。

$(document).ready(function(){
    var show_link = '/hr/resitration'; // That is current url.
    var accordion = $("#accordion");
    active = ???? // How to found activ url???
    accordion.accordion({
        header: "h3",
        active: active,
        autoHeight: false
    });
});
HTML部分中的

<div id="accordion">
    <h3><a href="#">Dashboard</a></h3>
    <div>
        <ul>
            <li><a href="/dashboard/my" >My works</a></li>
            <li><a href="/dashboard/send" >Send works</a></li>
        </ul>
    </div>
    <h3><a href="#">HR</a></h3>
    <div>
        <ul>
            <li><a href="/hr/resitration?add=true" >Add Staff</a></li>
            <li><a href="/hr/resitration" >Staff list</a></li>
            <li>Config
                <ul>
                <li><a href="/hr/schools" >Schools</a></li>
                <li><a href="/hr/role" >Roles</a></li>
                </ul>
            </li>
        </ul>
    </div>
</div>

3 个答案:

答案 0 :(得分:4)

我认为这会让你接近:

active = accordion.find("a[href="+show_link+"]").parents("h3");

答案 1 :(得分:0)

var links =  accordion.find("a");
active = links.find("[href=/hr/resitration]").index();

答案 2 :(得分:0)

使用jQuery UI 1.12,您需要提供<h3>的索引,该索引与包含手风琴菜单中内容的<div>分开。如果提供<div>的索引,它将无法按预期工作。

要实现此目的,请首先根据<h3>window.location.href找到最接近的window.location.pathname。这种匹配取决于锚标记的URL和您所在页面的URL。我们首先匹配锚标签,然后转到最接近的<div>并通过以下方式遍历一个同级回到<h3>

$( "#accordion" ).find("a[href=\""+window.location.pathname+"\"]").closest("div").prev())

然后在手风琴菜单中选择所有H3:

$( "#accordion h3" )

我们可以通过以下方法将其合并为一个命令来获取所有<h3>的组中<h3>的索引:

var active = $("#accordion h3").index($( "#accordion" ).find("a[href=\""+window.location.pathname+"\"]").closest("div").prev())

然后,您可以在初始化手风琴时使用此活动索引,如下所示:

accordion.accordion({
    header: "h3",
    active: active,
    autoHeight: false
});