我有一个像这样的HTML我需要从类似于' border _'
之类的字母开始获取类名[[1]]
[[1]][[1]]
[[1]][[1]][[1]]
NULL
[[1]][[2]]
[[1]][[2]][[1]]
NULL
[[2]]
[[2]][[1]]
[[2]][[1]][[1]]
NULL
[[2]][[2]]
[[2]][[2]][[1]]
NULL
需要外出
<div class="box selected border_red"></div>
<div class="box selected border_blue"></div>
<div class="box border_pink inactive"></div>
<div class="box selected border_green"></div>
<div class="box border_grey inactive"></div>
jquery
$('.box').each(function(){
})
答案 0 :(得分:2)
AUTH_USER_MODEL = 'myauth.AuthBaseUser'
&#13;
var check = "border_";
$('div.box[class*="border_"]').each(function () {
// Get array of class names
var cls = $(this).attr('class').split(' ');
for (var i = 0; i < cls.length; i++) {
// Iterate over the class and log it if it matches
if (cls[i].indexOf(check) > -1) {
console.log(cls[i].slice(0, cls[i].length));
}
}
});
&#13;
.box{
width:100px;
height:100px;
}
&#13;
受此问题的启发:JQuery get the rest of the element's class name that starts with string “whatever-”
答案 1 :(得分:1)
通过过滤掉那些不匹配的
来收集所有内容var classes = [];
$('.box').each(function() {
classes = classes
.concat(
$(this).attr("class")
.split(' ')
.filter(function(cls) {cls.indexOf('border_') === 0})
);
})
答案 2 :(得分:0)
如果你想要一个相当简单的版本,只需使用数组,地图和一个漂亮的正则表达式试试这个;
var borders =
$(".box")
.toArray()
.map( function(el) {
return el.className.match( /\b(border_[a-z0-9]+)\b/gi )[0];
});
// "borders" is an array
console.log( borders );
您还可以决定将.map()
更改为.each()
,然后使用el.className.match()
结果在循环内部执行一些jQuery工作:)
$(".box")
.each( function(key,el) {
$(el).text( el.className.match( /\b(border_[a-z0-9]+)\b/gi )[0] );
});