雖然仍然在學習JavaScript和JQuery,但我試圖儘可能實現「幹」原則來編寫更智能,更好,更高效的代碼。 以下代碼是以前的代碼:JQuery和Javascript:編寫更好的代碼 - 我該如何改進
$(document).ready(function(){
$('#social-holder').mouseenter(function(){
$('.circle-bg-fb').addClass('circle-bg-fb-end');
$('.circle-bg-tw').addClass('circle-bg-tw-end');
$('.circle-bg-g').addClass('circle-bg-g-end');
$('.circle-bg-p').addClass('circle-bg-p-end');
}).click(function(){
$('.circle-bg-fb').removeClass('circle-bg-fb-end');
$('.circle-bg-tw').removeClass('circle-bg-tw-end');
$('.circle-bg-g').removeClass('circle-bg-g-end');
$('.circle-bg-p').removeClass('circle-bg-p-end');
});
});
這是後(更換上面的代碼):
$(document).ready(function(){
var elems = [$('i.circle-bg-fb'), $('i.circle-bg-tw'), $('i.circle-bg-p'), $('i.circle-bg-g')];
var cls = ["circle-bg-fb-end", "circle-bg-tw-end", "circle-bg-p-end", "circle-bg-g-end",];
$('div#social-holder').on("mouseenter", function(){
for(var i=0; i<elems.length; i++) {
elems[i].addClass(cls[i]);
};
}).on("click", function(){
for(var i=0; i<elems.length; i++) {
elems[i].removeClass(cls[i]);
};
});
});
是否有寫上邊以及第二個主要是它比第一個更高效的代碼更好?任何更好的方法來做到這一點。這是我練習筆的link。
可能會更好地在Code Review上發佈此代碼(因爲它已經在工作,而不是在) – tymeJV
請記住,「更好」是主觀性的,代碼少並不總是更高效。如果您爲4個元素啓動for循環,則可能會增加不必要的複雜性。另外,如果讓事情精益求精並且意味着你的目標,那麼對於這個特殊問題,jQuery並不是一個很好的解決方案。 –