【问题标题】:Linking to a particular (hidden) tab from the current page and other pages using anchors in JQuery?使用 JQuery 中的锚链接到当前页面和其他页面的特定(隐藏)选项卡?
【发布时间】:2012-11-26 07:43:54
【问题描述】:

我已经检查了这个网站上的多个答案,但无论出于何种原因,他们都无法解决我的问题 (how to select a particular tab from other page using anchor tag in JQuery..?)。我只是在我的本地计算机上对此进行测试,所以我不确定这是否会产生影响。

我想从当前页面和其他页面链接到每个选项卡。现在我可以单击每个选项卡,它可以完美运行,并且站点 URL 会更改(#tab1、#tab2 等)。

但是,例如,如果我在选项卡 2 可见时单击选项卡 1 链接(不是实际的选项卡,而是页面上针对选项卡 1 的链接),则除了 URL 更改为 /site 之外什么也没有发生。 html#tab1。但是,如果我在选项卡 1 可见时单击选项卡 1 链接,它会成功将我带到选项卡 1。出现问题,因为选项卡是隐藏的 - 链接仅适用于当前可见的选项卡。我想如果我至少可以让它在页面内工作,我也可以通过页面外的链接让它工作。

基本上,我希望能够向某人发送指向/site.html#tab3 的链接并将其转到该选项卡。

我的代码:

    $(document).ready(function() {

      //Default Action
    $(".tab_content").hide(); //Hide all content
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab
    $(".tab_content:first").show(); //Show first tab content

    //On Click Event
    $("ul.tabs li").click(function() {
        $("ul.tabs li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content
        var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
        $(activeTab).fadeIn(); //Fade in the active content
        return;
    });
});

还有:

$(document).ready(function () {

    var tabId = window.location.hash; // will look something like "#h-02"
    $(tabId).click(); // after you've bound your click listener
});

还有标签:

 <ul class="tabs">
        <li><a href="#tab1">Ex 1</a></li>
        <li><a href="#tab2">Ex 2</a></li>
        <li><a href="#tab3">Ex 3</a></li>
        <li><a href="#tab4">Ex 4</a></li>

还有一个示例选项卡内容和页面上指向该选项卡的链接:

//tab content
<div class="tab_container">
        <div id="tab1" class="tab_content">
          <h2>Ex 1</h2>

//Link to Tab 1 from right menu
<ul><li>
<a href="#tab1">Click here to go to tab 1</a></li></ul>

谢谢!!

【问题讨论】:

    标签: jquery hyperlink tabs hidden visible


    【解决方案1】:

    看到这个:

    在页面加载时执行此操作(当 dom 准备好时)

    var tabId = location.hash; // will look something like "#h-02"
    

    检查哈希

     if(tabId){
       $(tabId).show(); // this will fired only when url get hash
       $(tabId).siblings().hide(); // this will show only targeted tab 
                                   // others get hidden
     }
    

    当你得到一个像site.html#tab1这样的网址时会发生什么

    variable tabId 的值为 #tab1

    if 代码块中的条件将显示目标选项卡

    【讨论】:

    • 这与 stackoverflow.com/questions/4177323/…‌​ery-tabs 结合使用
    • 我应该澄清一下,您的解决方案允许我从其他页面链接到特定选项卡 - 这很棒。但我确实有一个问题是直接单击链接而不是选项卡:如果我单击菜单上的链接,它会成功更改为正确的选项卡内容。但是 - 当我单击一个选项卡时,该选项卡“弹出”而其他选项卡保持较小。当我单击菜单上指向选项卡的链接时,没有任何变化……我上次直接单击的任何选项卡仍然“弹出”。
    【解决方案2】:

    为您的标签链接添加一个通用类。当您点击链接时,您可以触发相应选项卡的点击。

    HTML

    <a href="#tab1" class="tab-link">Click here to go to tab 1</a>
    

    JS

    $('.tab-link').click(function(){
        $('ul.tabs li a[href="'+this.href+'"]').parent().click();
    
    });
    

    【讨论】:

    • 无论出于何种原因,这对我都不起作用,但它确实让我想到了这个:[linkhttp://stackoverflow.com/questions/4177323/html-link-to-trigger-certain-jquery -标签。这确实有效 - 有点。如果我单击菜单上的链接,它会成功更改为正确的选项卡内容。但是 - 当我单击一个选项卡时,该选项卡“弹出”而其他选项卡保持较小。当我单击菜单上指向选项卡的链接时,没有任何变化……我上次直接单击的任何选项卡都仍然“弹出”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2019-06-10
    相关资源
    最近更新 更多