jQuery removeClass仅使用实际类名,而不使用var

jQuery removeClass仅使用实际类名,而不使用var,jquery,removeclass,Jquery,Removeclass,我创建了一个页面来使用960网格系统,了解div的位置。页面上最多有四个div。当从下拉列表中选择新的网格大小、拉或推数值时,我需要删除当前类,即grid_8、pull_5或push_4,并添加新选择的类 function alter_grid1(new_class_name){ var old = document.getElementById('grid1'); var classes = old.className.split(' '); var old_class_n

我创建了一个页面来使用960网格系统,了解div的位置。页面上最多有四个div。当从下拉列表中选择新的网格大小、拉或推数值时,我需要删除当前类,即
grid_8
pull_5
push_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(新的类名称)没有任何问题

我可以使用
removeClass('grid_8')没有任何问题(网格_8是实际的类名)

当我使用
removeClass(旧类名称)时它就是不起作用。没有错误消息,firebug中没有任何内容,只是不起作用

因为我不知道前面的值是什么,所以我必须删除任何可能存在的类

 $(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);

这是我能让它工作的唯一方法。当然可以,但看起来我要么错过了什么,要么做错了什么。如果有帮助的话,你可以看到我在做什么。我只是不知道如何使用var添加类,但不能以相同的方式删除类。

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

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]+/);

match
返回一个数组,而不是一个字符串。为什么要设置变量
old_class\u name='cessna'
,然后检查它是
'cessna'
还是
null
?@Niklas我对Javascript/jQuery很陌生,我总是在尝试改变一些东西来让它工作。这只是我反复尝试的结果
与类名匹配,但
removeClass(旧类名称)仍然无法工作。使用firebug,我可以看到它是正确的值,它使用一个变量添加新类,并从正则表达式中删除引号,就像您建议的那样,每次都会匹配
grid_1
。结果是一个字符串数组。使用
removeClass(旧的\u class\u name.join(“”))
。这似乎已经成功了!但我很困惑。当我将
old_class_name
记录到firebug控制台时,它会显示需要删除的类名。当我使用这样的实际类名而不是var时,它工作得很好。发送到控制台的内容与发送到removeClass函数的内容不同吗?没错,不应该不同。确定它不是
[“grid\u 1”]
也不是
“grid\u 1”
?我使用的是
控制台.log('旧grid1类名为'+Old\u class\u name+',新grid1类名为'+New\u class\u name+)
在控制台中,它显示为
grid_1
,就像我在removeClass中成功使用的一样。很好,它能工作,我只是想了解为什么需要加入才能达到目的。