当它不是应用于元素的唯一类时,通过知道其名称的一部分来获取类名

时间:2009-09-14 21:50:47

标签: javascript jquery regex

我正在寻找一种使用jquery / javascript获取类名的方法,当我只知道它的一部分并且有多个类应用于该元素时。

因此,如果我正在寻找一个以“charLimit_”开头的类,我想知道完整的类名,即使它不是应用于给定元素的唯一类。 示例HTML将是。

<input class="charLimit_30 lastNameValidation" type="text" />

我到目前为止将把“charLimit_30”和“lastNameValidation”都放入一个数组中,但是我怎么说我只想要“charLimit_30”然后只告诉我在下划线后面找到的值(30)。

var classMName = $('[class*=charLimit_]').attr("class").split(' ');

先谢谢你的帮助!!!

4 个答案:

答案 0 :(得分:2)

如果你只需要第一次出现,并且在课堂上跟随下划线的所有内容都是一个数字,那么像这样的东西会这样做:

$('[class*=charLimit_]').attr("class").match(/(?:\s|^)charLimit_(\d+)/)[1];

答案 1 :(得分:2)

这有点像墨水说的那样,但是用更简洁的方式:

var numbersAfterCharLimit = [];

$('[class*="charLimit_"]').each(function() {
    var matches;
    if (matches = this.className.match(/(?:\s+|^)charLimit_([0-9]+)(?:\s+|$)/)) {
        numbersAfterCharLimit.push(parseInt(matches[1], 10));
    }
});

答案 2 :(得分:1)

这似乎有效(至少在stackoverflow上):

var test = $('[class*=owner]').attr('class').split(' ');
for(i in test){
    if(test[i].indexOf('post-sign') !== false){
        test = test[i].split('-');
        // replace this with a return
        console.log(test[1]);
        break;
    }
}

可以使用他正在尝试使用的代码:

var test = $('[class*=charLimit_]').attr('class').split(' ');
for(i in test){
    if(test[i].indexOf('charLimit_') !== false){
        test = test[i].split('_');
        // replace this with a return if it is in a function
        console.log(test[1]);
        break;
    }
}

答案 3 :(得分:0)

var classes = $('input').attr('class');
var myNum = '';
for(var i=0;i<classes.length;i++){
    if(classes[i].match(/^charLimit_.*$/){
        myNum = classes[i].split('_')[1];
    }
}

这样的东西会起作用,除非当然有一些jQuery神奇的做法,我根本不知道:)