从一些字母开始获取jquery类名

时间:2017-10-15 11:46:02

标签: jquery each classname

我有一个像这样的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(){

})

3 个答案:

答案 0 :(得分:2)

&#13;
&#13;
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;
&#13;
&#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] );
  });

JSFiddle with results, here