缩短jquery中重复性较大的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-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($(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将更改此
指向的内容,除非使用箭头函数。