JQuery垂直选项卡 - 创建指向选项卡的其他链接

时间:2012-05-20 22:04:40

标签: javascript jquery jquery-ui-tabs

我正在将此脚本用于jQuery Vertical Tabs。

http://www.scriptbreaker.com/javascript/script/JQuery-vertical-tab-menu

<script language="JavaScript">
$(document).ready(function() {

$(".tabs .tab[id^=tab_menu]").hover(function() {
    var curMenu=$(this);
    $(".tabs .tab[id^=tab_menu]").removeClass("selected");
    curMenu.addClass("selected");

    var index=curMenu.attr("id").split("tab_menu_")[1];
    $(".curvedContainer .tabcontent").css("display","none");
    $(".curvedContainer #tab_content_"+index).css("display","block");
});
});
</script>

这是标签(链接)的HTML

<div class="tabscontainer">
 <div class="tabs">
     <div class="tab selected first" id="tab_menu_1">
         <div class="link">JavaScript</div>
         <div class="arrow"></div>
     </div>
     <div class="tab" id="tab_menu_2">
         <div class="link">CSS</div>
         <div class="arrow"></div>
     </div>
      <div class="tab last" id="tab_menu_3">
         <div class="link">JQuery</div>
         <div class="arrow"></div>
     </div>
</div>

我正在尝试从标签内容到另一个标签创建其他链接。

所以这样我可以链接到下一个标签或最后一个标签,保持与当前标签链接相同的功能(无刷新)

这是我关于stackoverflow的第一个问题,我搜索的范围很广。

我非常感谢所有的帮助。这是一个很棒的社区。

更新:

好的,这是一个包含我的完整代码的编辑:

<script type="text/javascript">
$(document).ready(function() {

$(".tabs .tab[id^=tab_menu]").click(function() {
    var curMenu=$(this);
    $(".tabs .tab[id^=tab_menu]").removeClass("selected");
    curMenu.addClass("selected");

    var index=curMenu.attr("id").split("tab_menu_")[1];
    $(".curvedContainer .tabcontent").css("display","none");
    $(".curvedContainer #tab_content_"+index).css("display","block");

});

});
</script>

<div class="curvedContainer">       

<div class="tabcontent" id="tab_content_1" style="display:block">
<p>text</p> 
</div>

<div class="tabcontent" id="tab_content_2">
<p>text</p>
</div>

<div class="tabcontent" id="tab_content_3">
<p>text</p>
</div>

<div class="tabcontent" id="tab_content_4"><h2 class="wwd_title">
<p>text</p> 
</div>  

</div>

<div class="tabscontainer">

<div class="tabs">         
<div class="tab selected first" id="tab_menu_1">             
<div class="link">Onefish</div>       
</div>         
<div class="tab" id="tab_menu_2">             
<div class="link">Twofish</div>                   
</div>         
<div class="tab" id="tab_menu_3">             
<div class="link">Redfish</div>         
</div>          
<div class="tab last" id="tab_menu_4">             
<div class="link">Bluefish</div>                     
</div>    
</div>  

2 个答案:

答案 0 :(得分:0)

为了使标签内容中的链接强制切换标签,有助于了解底层发生的事情,使其默认切换。

默认情况下,鼠标悬停事件会强制标签更改;因此,解决方案是通过将事件绑定到选项卡内容中的超链接来覆盖相关超链接的默认单击事件:

在您的问题中显示的JavaScript代码之后,在$(文档).ready 中包含此代码:

$('.tabcontent').find('a').click(function() {
    event.preventDefault();
    $('.tabs #' + $(this).attr("rel")).mouseover();
});

event.preventDefault()可防止超链接尝试重定向到href属性中输入的页面,而rel属性用作将超链接绑定到链接到的特定选项卡的方法。

rel属性用于获取选项卡id的值,以便我们以编程方式调用其mouseover事件,并切换选项卡。

<div class="tabscontainer">
 <div class="tabs">
     <div class="tab selected first" id="tab_menu_1">
         <div class="link">JavaScript</div>
         <div class="arrow"></div>
     </div>
     <div class="tab" id="tab_menu_2">
         <div class="link">CSS</div>
         <div class="arrow"></div>
     </div>
      <div class="tab last" id="tab_menu_3">
         <div class="link">JQuery</div>
         <div class="arrow"></div>
     </div>          
</div>
    <div class="curvedContainer">
        <div class="tabcontent" id="tab_content_1" style="display:block">content for tab 1 <a href="#" rel="tab_menu_2"> tab2</a></div>
        <div class="tabcontent" id="tab_content_2">content for tab 2</div>
        <div class="tabcontent" id="tab_content_3">content for tab 3</div>
    </div>

在选项卡的HTML内容中,只需使用href =“#”和rel属性,就像通常那样包含超链接。 rel属性必须等于目标选项卡的id,在本例中为tab_menu_2。

答案 1 :(得分:0)

根据您的要求运作

添加

        <div class="tabs">
             <div class="tab selected first" id="tab_menu_1">
                 <div class="link">JavaScript</div>
                 <div class="arrow"></div>
             </div>
        </div>

在任何标签

转到此链接http://jsfiddle.net/ipsjolly/ssR5f/

3rd标签中有一个类似的标签,我们可以跳转到1st标签。