【问题标题】:How to navigate through the jquery tabs with links outside the tabs如何使用选项卡外的链接浏览 jquery 选项卡
【发布时间】:2013-01-27 23:35:37
【问题描述】:

我整天都在搜索和调整以解决此问题。我已经在整个 stackoverflow 论坛上搜索了适合我情况的解决方案。

我的主页上有 5 个标签。我想使用选项卡外的链接跳转到并打开所需的选项卡。当我单击 Tab2 时,它会跳转到页面顶部,但不会打开 tab2,它会停留在 tab1(HOME 选项卡)上。如何解决这个问题?

链接到特定标签:

<a href="#" goto="tab2">Tab2</a> 

HTML 代码:

<div id="tabContaier">

    <ul>
        <li><a class="active" href="#tab1">HOME</a></li>
        <li><a href="#tab2">SERVICES</a></li>
        <li><a href="#tab3">OPTIONS</a></li>
            <li><a href="#tab4">ABOUT US</a></li>
            <li><a href="#tab5">CONTACT US</a></li>
    </ul><!-- //Tab buttons -->

    <div class="tabDetails">
        <div id="tab1" class="tabContents">
                <h1>Title1</h1>
                <iframe src="Home.html" width="1150" height="600" frameBorder="0" scrolling="no">Browser not compatible. </iframe >
        </div><!-- //tab1 -->
        <div id="tab2" class="tabContents">
                <h1>Title2  </h1>
                <h2>  </h2>
                <h3>  </h3>
                <iframe src="Services.html" width="1150" height="640" frameBorder="0" scrolling="no">Browser not compatible. </iframe >
        </div><!-- //tab2 -->
        <div id="tab3" class="tabContents">
               <h1>Title3</h1>
               <iframe src="Options.html" width="1150" height="600" frameBorder="0" scrolling="no">Browser not compatible. </iframe >
        </div><!-- //tab3 -->
        <div id="tab4" class="tabContents">
            <h1>Title4 </h1>
            <iframe src="Aboutus.html" width="1150" height="600" frameBorder="0" scrolling="no">Browser not compatible. </iframe >
        </div><!-- //tab4 -->
        <div id="tab5" class="tabContents">
            <h1>Title5</h1>
           <iframe src="Contactus.html" width="1150" height="600" frameBorder="0" scrolling="no">Browser not compatible. </iframe >
        </div><!-- //tab5 -->
    </div><!-- //tab Details -->
</div><!-- //Tab Container -->

CSS:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Tab</title>
<style type="text/css">
*{margin:10; padding:0;}

body{

    font:normal 14px/1.5em Arial, Helvetica, sans-serif;
}
a{outline:none;}

#tabContaier{
    background:#f0f0f0;
    border:1x solid #fff;
    margin:100px auto;
    padding:20px;
    position:absolute;
    width:1315px;
}
    #tabContaier ul{
        overflow:hidden;
        border-left:0px solid #fff;
        height:80px;
        position:center;
        z-index:100;
    }
    #tabContaier li{
        float:left;
        list-style:none;
    }
    #tabContaier li a{
        background:#ddd;
        border:3px solid #ffff;
        border-left:0;
        color:#666;
        cursor:pointer;
        display:block;
        height:35px;
        line-height:35px;
        padding:0 98px;
        text-decoration:none;
        text-transform:bold;
    }
    #tabContaier li a:hover{
        background:#fff;
    }
    #tabContaier li a.active{
        background:#fbfbfb;
        border:px solid #fff;
        border-right:px;
        color:#333;
    }
    .tabDetails{
        background:#fbfbfb;
        border:1px solid #fff;
        margin:34px px;
    }
    .tabContents{
        padding:px

}
    .tabContents h1{
        font:normal 24px/1.1em Georgia, "Times New Roman", Times, serif;
        padding:0 0 px;
                                width:auto;



</style>

JAVASCRIPTCODE:

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    // Hide all tab conten divs by default
    $(".tabContents").hide(); 

    // Show the first div of tab content by default
    $(".tabContents:first").show(); 

    //Fire the click event
    $("#tabContaier ul li a").click(function(){ 

        // Catch the click link
        var activeTab = $(this).attr("href"); 

        // Remove pre-highlighted link
        $("#tabContaier ul li a").removeClass("active"); 

        // set clicked link to highlight state
        $(this).addClass("active");         

        // hide currently visible tab content div
        $(".tabContents").hide(); 

        // show the target tab content div by matching clicked link.
        $(activeTab).fadeIn(); 
 return true;

    });
});
</script>

【问题讨论】:

  • 为什么不直接使用jQuery UI tabs
  • @EvgeniyNaydenov 也许他想制作自定义标签
  • 我希望这个论坛上的人可以帮助我解决这个问题。否则我会尝试你的解决方案@EvgeniyNaydenov
  • 似乎对我有用,但请注意我使用的是 jQuery 1.7.2。您使用 1.4.2 有什么原因吗?您没有包含 css,因此选项卡看起来不像选项卡,但请查看此 jsbin。 jsbin.com/etasep/1
  • @ShaggyInjun 我已经更新了我的帖子,参见上面的 CSS 代码。你能否给我一个新的 jsbin 链接,这次实现的 css 代码。我真的很好奇,因为你很难过它对你有用?

标签: javascript jquery html tabs hyperlink


【解决方案1】:

你的 jQuery 和 html 看起来不错,你应该有 jQuery 1.4 版本的问题。

如果您想要对标签页的 url 响应,请使用:

var anchor = window.location.hash;//returns url hash only like: '#tab4'

if ( anchor.length > 1 ) {
    $("#tabContaier ul li a").removeClass("active"); 
    $('a[href="' + anchor + '"]').addClass('active');

    $(anchor).fadeIn();
}

【讨论】:

  • 感谢@barlas 的回复。我已经在 return true 之后放置了你的代码; .但它没有用。它跳到页面顶部,但它再次停留在主页选项卡上,并且没有打开例如服务选项卡(tab2)。也许我把你的代码放错地方了?
  • @StajeBaa 我的示例不是点击响应,它只是页面加载时的 url 响应。你必须使用 jQuery 1.4.2 吗?你能更新你的jQuery并再试一次吗?
  • 是的,我已将其更新到 1.7.2。但是,我无法使用链接打开特定选项卡。只需单击选项卡即可浏览选项卡工作正常。但我也想浏览带有链接的选项卡——这些链接在选项卡之外。这些链接位于我的网页底部(页脚)。例如,当访问者单击位于页面底部的链接时,它必须打开并跳转到特定选项卡。
  • 这就是我想要的,请参阅这个 Jsfiddle 示例 jsfiddle.net/TGMDd/7。您可以清楚地看到一个位于选项卡之外的链接。当您单击“转到服务”链接时,它会打开右侧选项卡。
  • @StajeBaa 问题已解决:jsfiddle.net/TGMDd/32 它正在滚动到引用的 id,这可以通过长度来实现。
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多