我创建了一个可以使用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(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添加类,但不能以相同的方式删除它。
答案 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]+/);