缩短jquery中重复性较大的if-else语句
我想知道缩短或清理if-else语句的最佳方法是什么,例如:缩短jquery中重复性较大的if-else语句,jquery,if-statement,Jquery,If Statement,我想知道缩短或清理if-else语句的最佳方法是什么,例如: if($(this).hasClass("home")) { $("body").addClass("home"); } else if($(this).hasClass("tasks")) { $("body").addClass("tasks"); } else if($(this).hasClass("roadmap")) { $("body").addClass("roadmap"); } else if(
if($(this).hasClass("home")) {
$("body").addClass("home");
} else if($(this).hasClass("tasks")) {
$("body").addClass("tasks");
} else if($(this).hasClass("roadmap")) {
$("body").addClass("roadmap");
} else if($(this).hasClass("staff")) {
$("body").addClass("staff");
} else if($(this).hasClass("timesheet")) {
$("body").addClass("timesheet");
} else if($(this).hasClass("global-tasks")) {
$("body").addClass("global-tasks");
} else if($(this).hasClass("deleted-tasks")) {
$("body").addClass("deleted-tasks");
}
另一种解决方案是为该元素使用属性,例如,
数据体类
$('body').addClass($(this).data('body-class'));
另一种解决方案是为该元素使用属性,例如,
数据体类
$('body').addClass($(this).data('body-class'));
使用筛选器获取要添加的第一个类
var classes=['home','tasks','roadmap','staff','timesheet','global tasks','deleted tasks'];
变量$thingToTest=$('.thingToTest');
$('.result').addClass(函数(){
返回类.filter(函数(clazz){
返回$thingToTest.hasClass(clazz);
})[0];
});代码>
.result{display:none;}
.result.staff{display:inherit;}
结果
使用筛选器获取要添加的第一个类
var classes=['home','tasks','roadmap','staff','timesheet','global tasks','deleted tasks'];
变量$thingToTest=$('.thingToTest');
$('.result').addClass(函数(){
返回类.filter(函数(clazz){
返回$thingToTest.hasClass(clazz);
})[0];
});代码>
.result{display:none;}
.result.staff{display:inherit;}
结果
从技术上讲,这是不一样的。这可能会向主体添加多个类。OP最多只添加一个。或者可能是一个find()或filter()[0]来获得第一个匹配项。让我试试。还有,小旁注$('body')
可以是$(document.body)
以避免查找。此外,forEach将更改此指向的内容,除非使用箭头函数。从技术上讲,这是不同的。这可能会向主体添加多个类。OP最多只添加一个。或者可能是一个find()或filter()[0]来获得第一个匹配项。让我试试。还有,小旁注$('body')
可以是$(document.body)
以避免查找。此外,forEach将更改此指向的内容,除非使用箭头函数。