Javascript 对班级切换的改进
我正在使用jQuery 1.6,我希望改进以下代码(即,写得少做得多):Javascript 对班级切换的改进,javascript,jquery,class,toggle,Javascript,Jquery,Class,Toggle,我正在使用jQuery 1.6,我希望改进以下代码(即,写得少做得多): 我该怎么做?将块替换为: var hasOdd = row.hasClass('line_odd'); row.toggleClass('line_odd', !hasOdd).toggleClass('line_even', hasOdd); 你可以使用链接 if (row.hasClass('line_odd')) { row.removeClass('line_odd').addClass('line_even
我该怎么做?将块替换为:
var hasOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !hasOdd).toggleClass('line_even', hasOdd);
你可以使用链接
if (row.hasClass('line_odd')) {
row.removeClass('line_odd').addClass('line_even');
} else {
row.removeClass('line_even').addClass('line_odd');
}
我建议使用类似的方法,例如:
row.toggleClass("line_odd")
.toggleClass("line_even");
这假设没有任何行元素会同时设置行奇数
和行偶数
类,以使其与代码具有相同的效果。请尝试以下操作
var isOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !isOdd);
row.toggleClass('line_even', isOdd);
这是一个简化版本,它与第二个参数一起使用,即当为true时添加类,如果为false时删除类。假设行正好从两个类中的一个开始:
row.toggleClass("line_odd line_even")
应该可以做到这一点。不是简化版。可以进一步减少。toggleClass@Piyush:拥有它将避免调用hasClass两次。+1,因为它使用与原始类完全相同的逻辑,并且在
行
可能未设置任何一个或两个类时工作得更好。@Piyus在理想情况下我会同意。不过OP没有指定代码以正确的状态启动。考虑行最初是用“Lay-Soad”和“Lay-Fig”都开始的。在这种情况下,需要isOdd
。我同意这有点离谱,但OP没有具体说明,我想确保我的简化功能与原始样本一样好。这不是只有在类已经设置好的情况下才会添加类吗<没有第二个参数的code>toggleClass已经有了正确的行为。我修复了代码中的一个拼写错误。关于不需要第二个参数的第二个语句,语法不是像$(选择器)吗。如果没有第二个参数,它将删除类(如果存在),如果不存在则添加。您还需要更改代码的第一部分,仅当存在“line\u偶数”时才添加“line\u odd”。考虑到您的假设,这是一种方法。
row.toggleClass('line_odd', row.hasClass('line_odd') ).toggleClass('line_even',
row.hasClass('line_odd') );
row.toggleClass("line_odd line_even")