2017-02-24 104 views
0

我想知道如果我的代码能够缩短它,我能做些什么。 这是我的代码,它就像一个简单的标签。 顺便说一句,这些代码已经工作,但我想如果我有很多选项卡,那么我必须重复许多点击功能。 有没有办法让我的脚本更短,在此先感谢。Javascript/jquery onclick函数浓缩

$(function() { 
    $(".invMer, .invEq").hide(); 

    $(".mergers a").click(function() { 
     $(".invMer").fadeIn(); 
     $(".invEq, .invPe").hide(); 
    }); 

    $(".equity a").click(function() { 
     $(".invEq").fadeIn(); 
     $(".invMer, .invPe").hide(); 
    }); 

    $(".privateEq a").click(function() { 
     $(".invPe").fadeIn(); 
     $(".invMer, .invEq").hide(); 
    }); 
+0

不是要挑上你@camdev,你的问题和代码的实现是经验不足的开发商,越复杂的代码,只是要始终牢记,如果事情是一个很好的例子变得疯狂,重复,难以阅读,难以维护,代码太复杂,没有理由 –

回答

5

为所有链接指定同一个类,并指定一个数据属性,指出应该打开哪个选项卡。因此,像:

<div class="mergers"> 
    <a class="tablink" href="#" data-tab="invMer">Mergers</a> 
</div> 

而且所有的选项卡的div也应该有一个共同的类:

<div class="tabdiv" id="invMer"> 
    ... 
</div> 

然后你可以使用一个处理程序:

$(".tablink").click(function() { 
    var tab = '#' + $(this).data("tab"); 
    $(".tabdiv").not(tab).hide(); 
    $(tab).show(); 
}); 
1

使用数据属性

<a data-show=".invPe"> 

and do

$("a[data-show]").on("click", function() { 
    var selector = $(this).data("show"); 
    $(".invMer, .invEq, .invPe").hide(); 
    $(selector).fadeIn(); 
});