我知道这非常简单,但我是新来的,我只需要显示一次。所以,当我使用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