我正在寻找一种使用jquery / javascript获取类名的方法,当我只知道它的一部分并且有多个类应用于该元素时。
因此,如果我正在寻找一个以“charLimit_”开头的类,我想知道完整的类名,即使它不是应用于给定元素的唯一类。 示例HTML将是。
<input class="charLimit_30 lastNameValidation" type="text" />
我到目前为止将把“charLimit_30”和“lastNameValidation”都放入一个数组中,但是我怎么说我只想要“charLimit_30”然后只告诉我在下划线后面找到的值(30)。
var classMName = $('[class*=charLimit_]').attr("class").split(' ');
先谢谢你的帮助!!!
答案 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神奇的做法,我根本不知道:)