我在互聯網上看過這麼多次。人們說,不要在編程語言中重複自己。我爲我的網頁編寫了這個腳本,但我重複了很多。Javascript/jquery - 不要重複自己
真有那麼大的交易?
我應該做一個功能?
我該怎麼辦呢?
var active = '.teachers';
var disabled = '.teacher-link';
var width = $('.teachers .staff-outer-container').children().size() * 180;
$('.staff-outer-container').css('width', width + 'px');
$('.teacher-link').click(function() {
if (active != '.teachers') {
$(active).hide();
active = '.teachers';
$(active).show();
width = $('.teachers .staff-outer-container').children().size() * 180;
$('.teachers .staff-outer-container').css('width', width + 'px');
$(disabled).removeClass('active').addClass('clickable');
disabled = this;
$(disabled).removeClass('clickable').addClass('active');
$('#type').text('Teachers');
}
});
$('.admin-link').click(function() {
if (active != '.administrators') {
$(active).hide();
active = '.administrators';
$(active).show();
width = $('.administrators .staff-outer-container').children().size() * 180;
$('.administrators .staff-outer-container').css('width', width + 'px');
$(disabled).removeClass('active').addClass('clickable');
disabled = this;
$(disabled).removeClass('clickable').addClass('active');
$('#type').text('Administrators');
}
});
$('.support-link').click(function() {
if (active != '.support') {
$(active).hide();
active = '.support';
$(active).show();
width = $('.support .staff-outer-container').children().size() * 180;
$('.support .staff-outer-container').css('width', width + 'px');
$(disabled).removeClass('active').addClass('clickable');
disabled = this;
$(disabled).removeClass('clickable').addClass('active');
$('#type').text('Support Staff');
}
});
編輯 感謝大家的投入!我很困惑如何實現這些功能。這就是我得到的:$('.teacher-link').click(handle_click('.teachers', 'Teachers'));
我試過了,它沒有工作。 我還在哪裏放置該功能?我是把它放在$(document).ready
之內還是之外?將函數放在腳本的開始或結束處是最好的嗎?
不要重複自己。 '$(active)'一遍又一遍地創建一個jQuery對象。創建一次,將其存儲在一個變量中。 ;) – epascarello
問題歸結爲工程和軟件實踐的可維護性:http://en.wikipedia.org/wiki/Maintainability和http://en.wikipedia.org/wiki/Software_maintenance。根據具體情況,這是一個巨大或非常小的問題。這仍然是一個問題。 – Automatico
@epascarello實際上在這種情況下,活動實際上是在對象創建之間變化 –