Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对班级切换的改进_Javascript_Jquery_Class_Toggle - Fatal编程技术网

Javascript 对班级切换的改进

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

我正在使用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');

} 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")