2012-10-11 99 views
0

只是一个快速的,这是快!jQuery选项卡返回false;

我有三个标签,只是逐渐淡入和隐藏其他标签内容。非常基本。

只是不知道如何停止发送页面到顶部的链接,而不是一个大问题,但烦人。

这里有jQuery。

<script> 
    jQuery("#accounttab").live('click', function(){ 

     jQuery("#accounttab").css("border", "2px solid #009FE3"); 
     jQuery("#salestab").css("border", "2px solid white"); 
     jQuery("#delivertab").css("border", "2px solid white"); 

     jQuery("#tabtext1").fadeIn(200); 
     jQuery("#tabtext2").hide(); 
     jQuery("#tabtext3").hide(); 
    return false; 
    }); 

    jQuery("#salestab").live('click', function(){ 

     jQuery("#salestab").css("border", "2px solid #009FE3"); 
     jQuery("#accounttab").css("border", "2px solid white"); 
     jQuery("#delivertab").css("border", "2px solid white"); 

     jQuery("#tabtext1").hide(); 
     jQuery("#tabtext2").fadeIn(200); 
     jQuery("#tabtext3").hide(); 

    return false; 
    }); 

    jQuery("#delivertab").live('click', function(){ 

     jQuery("#delivertab").css("border", "2px solid #009FE3"); 
     jQuery("#accounttab").css("border", "2px solid white"); 
     jQuery("#salestab").css("border", "2px solid white"); 

     jQuery("#tabtext1").hide(); 
     jQuery("#tabtext2").hide(); 
     jQuery("#tabtext3").fadeIn(200); 

    return false; 
    }); 


</script> 

任何意见将是真棒

+1

'.live()'已弃用,有[tabs插件](http://jqueryui.com/tabs/),你所有的处理程序基本上都是做同样的事情,所以它们可以合并,你需要当你点击链接时,'preventDefault','$'是'jQuery'的简写... – nbrooks

回答

0

你可以缩短你的代码,如:

HTML

<a id="accounttab" class='actab' href="#">Test1</a> 
<a id="salestab" class='sltab' href="#">Test2</a> 
<a id="delivertab" class='dtab' href="#">Test3</a> 

<br /><br/> 
<div id="tabtext1" class='actab'>Div test 1</div> 
<div id="tabtext2" class='sltab'>Div test 2</div> 
<div id="tabtext3" class='dtab'>Div test 3</div> 

JS

var tabsArr = ['#accounttab', '#salestab', '#delivertab']; 
var joined = tabsArr.join(", "); 

$(joined).live("click", function(e) { 
    e.preventDefault(); 
    var selectedClass = $(this).attr("class"); 
    $("div[class!='"+selectedClass+"']").css("border", "2px solid white").hide(); 
    $("div[class='"+selectedClass+"']").css("border", "2px solid #009FE3").fadeIn(200);  
}); 

演示:jsFiddle

1

Working Demo

HTML

<div id='parent'> 
<a href='#' id='acounttab' class='tablink'> Account </a> 
<a href='#' id='salestab' class='tablink'>Sales </a> 
<a href='#' id='delivertab' class='tablink'>Deliver </a> 
</div> 
<div id='tabtext1'>Account - Here you go!</div> 
<div id='tabtext2'>Sales - Here you go!</div> 
<div id='tabtext3'>Deliver - Here you go!</div>​ 

CSS

div[id^="tabtext"] { display:none; }​ 

的Javascript

$(function() { 
    $('#parent').on('click', 'a.tablink', function(e) { 
     e.preventDefault(); 

     $(this).css("border", "2px solid #009FE3"); 
     $('a.tablink').not(this).css("border", "2px solid white"); 

     var i = $(this).index('a.tablink'); 
     var tab = $('#tabtext'+(i+1)).fadeIn(200); 
     $('div[id^="tabtext"]').not(tab).hide(); 

     return false; 
    }); 
}); 

​ 
+0

使用['.on'](http://api.jquery.com/on/)需要至少jQuery 1.7 ,但如有必要,还有其他选择 – nbrooks