3

我的网站有一个选项卡式界面,在所有页面中都一致使用。我可以链接到基本页面(第一个选项卡),但不知道如何链接到特定选项卡。

这是我的 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 页面上,则选项卡式界面可以工作。但我试图建立的链接类型如下:如果我在另一个页面上,我想链接到关于页面上的特定选项卡。我有一个导航页脚,我希望能够单击“邮件列表”或“联系人”等超链接,并显示正确的页面和正确的选项卡。

4

4 回答 4

1

实现这一点的技术是使用 url 的哈希部分。例如:

about.php#panel1

或者,类似地,使用 hashbang:

about.php#!panel1

(如果您关心 SEO,则 hashbang 是一个更好的选择。)

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

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

在 jQuery 中,它看起来像这样:

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

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

于 2012-04-26T19:11:32.183 回答
1

例如,如果您想专门单击“条款”选项卡,您可以:

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

于 2012-04-26T16:49:53.467 回答
0

也许这是矫枉过正,但您应该能够通过客户端站点路由来做到这一点。

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

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

http://jsrouter.codeplex.com/

当然还有其他路由解决方案,这里有一个关于主题 javascript 客户端路由/路径库的 stackoverflow 帖子的链接

于 2012-04-26T19:01:28.353 回答
0
$('a[href="#panel1"]').click(function() {
        //insert action here;
});​
于 2012-04-26T16:57:33.600 回答