将 DRY 应用于一组相似的函数
Applying DRY to a set of similar functions
应用 DRY 是我最大的挣扎。谁能帮我创建一个实现与这 4 个函数相同的函数以及如何为每个 .symbol 调用它?
$(".symbol:nth-child(1)").click(function(){
$("body").removeClass();
$("body").addClass("gradient1");
})
$(".symbol:nth-child(2)").click(function(){
$("body").removeClass();
$("body").addClass("gradient2");
})
$(".symbol:nth-child(3)").click(function(){
$("body").removeClass();
$("body").addClass("gradient3");
})
$(".symbol:nth-child(4)").click(function(){
$("body").removeClass();
$("body").addClass("gradient4");
})
您可以创建一个采用索引并分配点击处理程序的函数:
function applyNthClick( n ) {
$(".symbol:nth-child(" + n + ")").click(function(){
$("body").removeClass();
$("body").addClass("gradient" + n);
})
}
然后像这样使用它:
applyNthClick(1);
applyNthClick(2);
applyNthClick(3);
applyNthClick(4);
或者,如果您知道所有 n
,您可以将它们组成一个数组,然后将函数映射到它上面:
[1,2,3,4].forEach( applyNthClick );
可以使用整个符号集合中每个元素的索引
var $symbols = $(".symbol").click(function(){
var symbolIndex = $symbols.index(this);
$("body").removeClass().addClass("gradient" + (symbolIndex +1) );
});
参考:index()
应用 DRY 是我最大的挣扎。谁能帮我创建一个实现与这 4 个函数相同的函数以及如何为每个 .symbol 调用它?
$(".symbol:nth-child(1)").click(function(){
$("body").removeClass();
$("body").addClass("gradient1");
})
$(".symbol:nth-child(2)").click(function(){
$("body").removeClass();
$("body").addClass("gradient2");
})
$(".symbol:nth-child(3)").click(function(){
$("body").removeClass();
$("body").addClass("gradient3");
})
$(".symbol:nth-child(4)").click(function(){
$("body").removeClass();
$("body").addClass("gradient4");
})
您可以创建一个采用索引并分配点击处理程序的函数:
function applyNthClick( n ) {
$(".symbol:nth-child(" + n + ")").click(function(){
$("body").removeClass();
$("body").addClass("gradient" + n);
})
}
然后像这样使用它:
applyNthClick(1);
applyNthClick(2);
applyNthClick(3);
applyNthClick(4);
或者,如果您知道所有 n
,您可以将它们组成一个数组,然后将函数映射到它上面:
[1,2,3,4].forEach( applyNthClick );
可以使用整个符号集合中每个元素的索引
var $symbols = $(".symbol").click(function(){
var symbolIndex = $symbols.index(this);
$("body").removeClass().addClass("gradient" + (symbolIndex +1) );
});
参考:index()