我知道這非常簡單,但我是新來的,我只需要顯示一次。所以,當我使用jQuery/JavaScript的,我發現自己一次又一次寫重複的代碼到目標具有相同功能的不同元素,例如:jQuery重構,如何避免重複代碼?
$(function() {
$('.icon1').click(function() {
$('.info1').toggle().addClass('animated fadeInDown');
$('.info2, .info3, .info4').hide();
});
});
$(function() {
$('.icon2').click(function() {
$('.info2').toggle().addClass('animated fadeInLeft');
$('.info1, .info3, .info4').hide();
});
});
,這再次重複了ICON3和圖標4。我正在選擇另一個元素,顯示另一個元素,隱藏另外三個元素,並在每個函數中添加不同的類,我不知道什麼是不重複每個元素的整個事情的最佳方式。我很樂意看到任何想法來重構這一點,並且不會介意看到這是如何在香草js中完成的。
(爲了說明這裏的代碼是從我的投資組合,其中點擊圖標顯示關於它的信息面板的experience section的代碼片段,並隱藏任何先前顯示信息面板。)
哇!這是一個了不起的見解。這個問題唯一的問題是,infopanels沒有切換顯示/隱藏。但是我添加了@espascarello的想法'not()',它的功能就像一個魅力:'$('。icon')。click(function(){var infoPanel ='.info-'+ $(this)。 data('info'); $('。info')。not(infoPanel).hide(); $(infoPanel).toggle(); });' [這裏是工作示例鏈接](https ://codepen.io/Syknapse/pen/dzEOmz) – Syknapse
現在我想知道,如果我想要把這個不同的類添加到不同的圖標,而不是所有的fadeInDown,有沒有一種優雅的方式,我可以去做這個沒有重複相同的代碼塊? – Syknapse
if($(this).data('info')=== 1 || $(this).data('info')='我有回答我自己的問題通過嘗試一個if語句,它工作正常 ' == 4){ $(infoPanel).addClass('test'); } else { $(infoPanel).addClass('test2');我現在的問題是,如果我想爲每個圖標添加一個不同的類,是否只添加'else if'statements或者是否有更簡潔的方法? – Syknapse