改进班级切换

时间:2011-09-02 23:44:25

标签: javascript jquery class toggle

我正在使用jQuery 1.6,我想改进以下代码(即写少做多):

if (row.hasClass('line_odd')) {
  row.removeClass('line_odd');
  row.addClass('line_even');
} else {
  row.removeClass('line_even');
  row.addClass('line_odd');
}

我该怎么做?

6 个答案:

答案 0 :(得分:3)

将块替换为:

var hasOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !hasOdd).toggleClass('line_even', hasOdd);

答案 1 :(得分:2)

我建议使用像http://api.jquery.com/toggleClass/之类的东西,例如:

row.toggleClass("line_odd")
   .toggleClass("line_even");

这假设没有行元素最初会设置line_oddline_even类,以使其与代码具有相同的效果。

答案 2 :(得分:1)

尝试以下

var isOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !isOdd);
row.toggleClass('line_even', isOdd);

答案 3 :(得分:1)

假设行以两个类中的一个开始:

row.toggleClass("line_odd line_even")

应该这样做。

答案 4 :(得分:0)

你可以使用链接

if (row.hasClass('line_odd')) {
  row.removeClass('line_odd').addClass('line_even');

} else {
  row.removeClass('line_even').addClass('line_odd'); 
}

答案 5 :(得分:0)

row.toggleClass('line_odd', row.hasClass('line_odd') ).toggleClass('line_even', 
row.hasClass('line_odd') );

这是缩减版本,它使用.toggleClass以及第二个参数,当true添加类时,如果为false则删除类。