如何直接链接到特定的JavaScript选项卡?

时间:2012-04-26 16:47:09

标签: javascript html css

我的网站有一个标签式界面,可在所有页面中一致使用。我可以链接到基页(第一个选项卡),但无法弄清楚如何链接到特定选项卡。

这是我的JavaScript:

$(document).ready(function() {
  $(".tabs a").click(function() {
    var $this = $(this);
    $(".panel").hide();
    $(".tabs a.active").removeClass("active");
    $this.addClass("active").blur();
    var panel = $this.attr("href");
    $(panel).fadeIn(250);
    return false;
  });
$(".tabs li:first-of-type a").click();
});

我的每个页面都设置如下:

<div id="aboutContainer">
    <ul class="tabs">
        <li><a href="#panel1">About Us</a></li>
        <li><a href="#panel2">Contact Us</a></li>
        <li><a href="#panel3">Mailing List</a></li>
        <li><a href="#panel4">Terms</a></li>
        <li><a href="#panel5">Privacy Policy</a></li>
        <li><a href="#panel6">Help</a></li>
    </ul>
        <div class="panelContainer">
            <div class="panel" id="panel1">
                <?php include('includes/aboutme.php'); ?>
            </div>

            <div class="panel" id="panel2">
                <?php include('includes/contact.php'); ?>
            </div>

            <div class="panel" id="panel3">
                <?php include('includes/mailinglist.php'); ?>
            </div>

            <div class="panel" id="panel4">
                <?php include('includes/terms.php'); ?>             
            </div>

            <div class="panel" id="panel5">
                <?php include('includes/privacypolicy.php'); ?>
            </div>

            <div class="panel" id="panel6">
                <?php include('includes/cheekyreference.php'); ?>
            </div>
        </div>
</div>

任何指针都将非常感激。我是JavaScript的新手,并且无法在网上找到答案。

稍微澄清一点:

如果我在about.php页面上,则选项卡界面有效。但我想要的链接类型如下:如果我在另一个页面上,我想链接到about页面上的特定选项卡。我有一个导航页脚,我希望能够点击诸如“邮件列表”或“联系人”之类的超链接,并显示正确的页面以及正确的选项卡。

4 个答案:

答案 0 :(得分:1)

如果您想专门点击“条款”标签,例如,您可以:

$(".tabs a[href='#panel14']").click();

答案 1 :(得分:1)

实现此目的的技术是使用url的哈希部分。例如:

  

about.php#PANEL1

或类似地,使用hashbang:

  

about.php#!PANEL1

(如果您关注SEO,那么hashbang是更好的选择。)

然后,您需要在页面中包含一个脚本,该脚本将检测网址的哈希部分,并相应地激活选项卡。

抱歉,我一直这样做,但没有公开示例。我有一个帖子时会更新帖子。

在jQuery中它看起来像这样:

$(".tabs a[href="+window.location.hash+"]").click();

注意:您也可以使用查询字符串,但如果您已经在页面上,则哈希将阻止页面刷新。

答案 2 :(得分:0)

$('a[href="#panel1"]').click(function() {
        //insert action here;
});​

答案 3 :(得分:0)

也许这有点矫枉过正,但您应该可以通过客户端站点路由来完成。

您首先需要设置根据地址栏中的网址激活的“路线”,然后您可以使用以下格式链接到tab1 on about about 并在激活的路径中激活相应的选项卡(触发该选项卡上的点击事件)。

这是一个提供JavaScript路由的jQuery插件的链接

http://jsrouter.codeplex.com/

当然还有其他路由解决方案,这里是关于该主题的stackoverflow帖子的链接 javascript clientside routing/pathing library