2017-02-24 120 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(); 
});