jQuery removeClass只使用实际的类名,而不是var

时间:2012-01-31 09:44:12

标签: jquery removeclass

我创建了一个可以使用960网格系统的页面,了解div放置。页面上最多有四个div。当从下拉列表中选择新的网格大小,拉取或推送值时,我需要删除当前类,即grid_8pull_5push_4,并添加新选择的类。

function alter_grid1(new_class_name){

   var old = document.getElementById('grid1');
   var classes = old.className.split(' ');
   var old_class_name = 'cessna';
   $.each(classes, function(){

        if(old_class_name == 'cessna' || old_class_name == null){
          old_class_name = this.match('/grid_1|grid_2|grid_3|grid_4|grid_5|grid_6|grid_7|grid_8|grid_9|grid_10|grid_11|grid_12|grid_13|grid_14|grid_15|grid_16|grid_17/');
       }
   });
   $(old).removeClass('grid_1 grid_2 grid_3 grid_4 grid_5 grid_6 grid_7 grid_8 grid_9 grid_10 grid_11 grid_12 grid_13 grid_14 grid_15 grid_16').addClass(new_class_name);
   console.log('Old grid1 class name is ' + old_class_name + ' and New grid1 class name is ' + new_class_name);
}

我可以毫无困难地使用addClass(new_class_name);

我可以毫无困难地使用removeClass('grid_8');(grid_8是实际的类名)

当我使用removeClass(old_class_name);时,它不起作用。没有错误信息,萤火虫没什么,只是不起作用。

由于我不知道之前的值是什么,我必须删除任何可能存在的类

 $(old).removeClass('grid_1 grid_2 grid_3 grid_4 grid_5 grid_6 grid_7 grid_8 grid_9 grid_10 grid_11 grid_12 grid_13 grid_14 grid_15 grid_16').addClass(new_class_name);

这是我能让它发挥作用的唯一方法。当然它有效,但似乎我要么缺少某些东西,要么做错了什么。如果有帮助,你可以看到我trying to do here。我只是不知道如何使用var添加类,但不能以相同的方式删除它。

1 个答案:

答案 0 :(得分:2)

似乎你的正则表达式是错误的。使用不带斜线的字符串或斜杠。

old_class_name = this.match(/grid_1|grid_2|grid_3|grid_4|grid_5|grid_6|grid_7|grid_8|grid_9|grid_10|grid_11|grid_12|grid_13|grid_14|grid_15|grid_16|grid_17/);

或者甚至

old_class_name = this.match(/grid_[0-9]+/);