如何使用锚点切换(jquery)

时间:2011-05-30 17:43:09

标签: javascript jquery javascript-events toggle

我的jquery有一个小问题。

情况:

我有一段jquery代码,我切换结果。

JS代码:

//Set default open/close settings
$('.acc_container').hide(); //Hide/close all containers
//$('.acc_trigger:first').addClass('active').next().show(); //Add "active" class to first trigger, then show/open the immediate next container

//On Click
$('.acc_trigger').click(function(){
    if( $(this).next().is(':hidden') ) { //If immediate next container is closed...
        $('.acc_trigger').removeClass('active').next().slideUp(); //Remove all .acc_trigger classes and slide up the immediate next container
        $(this).toggleClass('active').next().slideDown(); //Add .acc_trigger class to clicked trigger and slide down the immediate next container
    }
    return true; //Prevent the browser jump to the link anchor
});

现在我要打开 - 从网址切换锚点位置上的项目,如(http://x.com/page.php#toggleItem2

问题: 如何从URL读取toggleItem2并准确打开此部分?

其他:

HTML代码:

<div class="container">
    <h2 class="acc_trigger"><a href="#toggle1">Item1</a></h2>
    <div class="acc_container">
        <div class="block">
            Inner Text in toggle 1
        </div>
    </div>

    <h2 class="acc_trigger"><a href="#toggle2">Item2</a></h2>
    <div class="acc_container">
        <div class="block">
            Inner Text in toggle 2
        </div>
    </div>


    <h2 class="acc_trigger"><a href="#toggle3">Item3</a></h2>
    <div class="acc_container">
        <div class="block">
            Inner Text in toggle 3
        </div>
    </div>

</div>

我希望问题明确定义。

提前致谢。

4 个答案:

答案 0 :(得分:4)

您应该根据主题提供div个ID,例如

<h2 class="acc_trigger"><a href="#toggle1">Item1</a></h2>
<div id="toggle1" class="acc_container">
    <div class="block">
        Inner Text in toggle 1
    </div>
</div>

您可以从location对象获取文档片段:

document.location.hash

然后它就是(假设其他容器都隐藏了):

$(document.location.hash).slideDown().prev().addClass('active');

答案 1 :(得分:1)

尝试jquery切换自己

http://api.jquery.com/toggle/

答案 2 :(得分:0)

这是在window.location.hash变量中保存的。

答案 3 :(得分:0)

您可以这样做:

http://jsfiddle.net/b6Znw/

使用Javascript:

$().ready(function(){
    $('.acc_trigger a').click(function(){
        $(this).closest('.acc_trigger').next('.acc_container').toggle()
        return false;   
    })
})