【发布时间】:2016-05-21 01:41:34
【问题描述】:
我有几个类名如下所示的 div:
class="col-md-4"
有些人有:
class="col-md-12"
我想要做的是搜索类末尾的数字并将它们全部替换为:
class="col-md-6"
如何使用 jQuery 做到这一点?
【问题讨论】:
标签: javascript jquery
我有几个类名如下所示的 div:
class="col-md-4"
有些人有:
class="col-md-12"
我想要做的是搜索类末尾的数字并将它们全部替换为:
class="col-md-6"
如何使用 jQuery 做到这一点?
【问题讨论】:
标签: javascript jquery
您可以在 jQuery 中使用特殊的选择器:
^= 以...开头
*= 包含...
或者,如果您没有获得全部选择器,请使用这两个选择器的组合。
var cols = $('[class^="col-md-"]');
然后到remove all classes with a wildcard
cols.removeClass(function (index, css) {
return (css.match (/(^|\s)col-md-\S+/g) || []).join(' ');
});
然后添加你想要的类:
cols.addClass('col-md-6');
【讨论】:
class="something col-md-4"。
*= 不是以选择器结尾的。
*= 这是“包含”选择器。话又说回来,什么仍然不可靠?
[class^="col-md-"] 选择器。你应该改用[class*="col-md-"]。
你可以像这样使用“包含”选择器
$("[class*='col-md-']").removeClass (function (index, css) {
return (css.match (/(^|\s)col-md-\S+/g) || []).join(' ');
}).addClass("col-md-6");
基于this answer的removeClass函数
$("[class*='col-md-']")
将找到任何具有包含col-md- 的类的元素。
removeClass 函数将删除它。最后 col-md-6 将被添加。
如果类属性在 col-md- 之前有另一个类,则将 [class^='col-md-'] 更改为 [class*='col-md-']。感谢@dfsq 指出这一点
【讨论】:
尝试删除类并添加新类:
$(".col-md-4").removeClass("col-md-4").addClass("col-md-6");
$(".col-md-12").removeClass("col-md-12").addClass("col-md-6");
【讨论】:
这也应该有效:
$('[class*=col-md]').removeClass('col-md-4 col-md-12').addClass('col-md-6');
【讨论】:
如果所有这些元素都在主 div 中,您可以使用简单的 javascript 来实现。
例如:
var arr_divs = document.getElementById('main_div').getElementsByTagName('div');
for(var i = 0; i < arr_divs.length; i++){
if(arr_divs.item(i).className == 'col-md-12' || arr_divs.item(i).className == 'col-md-4'){
arr_divs.item(i).className = 'col-md-6';
}
}
【讨论】:
这可能不是做你想做的最有效的方式,但它保持简单。这是一个有效的小提琴:https://jsfiddle.net/Lns1ob5q/
$("[class^=col-md-]").attr("class", "col-md-6");
上面选择了类包含col-md- ([class^=col-md-]) 的所有元素,并用col-md-6 替换该类,无论后面紧跟什么数字。
我说它效率不高的原因是因为 jQuery 最初会选择已经有 col-md-6 类的元素并用相同的类替换它们的类...但是嘿,它有效!
【讨论】: