Javascript 获取元素类名称的部分
我可以举以下任何一个例子:Javascript 获取元素类名称的部分,javascript,jquery,Javascript,Jquery,我可以举以下任何一个例子: <input type="text" class="some_class extra_1" /> <input type="text" class="some_class extra_4 some_class2" /> <textarea class="extra_17"></textarea> 我需要在“额外”之后得到号码: 1,4,17 或全班: 额外的1,额外的4,额外的17 var numbers = [
<input type="text" class="some_class extra_1" />
<input type="text" class="some_class extra_4 some_class2" />
<textarea class="extra_17"></textarea>
我需要在“额外”之后得到号码:
1,4,17
或全班:
额外的1,额外的4,额外的17
var numbers = [ ];
$('input, textarea').each(function() {
numbers = numbers.concat( this.className.split( /\s+/ ).filter(function( cl ) {
return cl.indexOf( 'extra' ) === 0;
}).map(function( cl ) {
return +cl.split( '_' )[ 1 ];
}) );
})
console.log( numbers ); // [1, 4, 17]
像
以extra开头的类获取元素_ 获取元素
$('[class^="extra_"]');
获得全班
$('[class^="extra_"]').map(function(_, x) { return x.getAttribute('class'); });
只是为了得到数字
$('[class^="extra_"]').map(function(_, x) {
return parseInt(x.getAttribute('class').split('_')[1], 10);
});
要获取类中包含额外_uu的所有元素并返回数字,请执行以下操作:-
var t = $('[class*=extra_]').map(function() {
return this.className.match(/extra_\d+/)[0].split('_')[1];
});
returns ["1", "42", "17"]
获取以extra开头的类的元素_ 获取元素
$('[class^="extra_"]');
获得全班
$('[class^="extra_"]').map(function(_, x) { return x.getAttribute('class'); });
只是为了得到数字
$('[class^="extra_"]').map(function(_, x) {
return parseInt(x.getAttribute('class').split('_')[1], 10);
});
要获取类中包含额外_uu的所有元素并返回数字,请执行以下操作:-
var t = $('[class*=extra_]').map(function() {
return this.className.match(/extra_\d+/)[0].split('_')[1];
});
returns ["1", "42", "17"]
另一种选择:
var arr = $("input, textarea").map(function() {
try {
return /\s*extra_(\d+)\s*/.exec(this.className)[1];
} catch (e) {
return null;
}
}).get();
演示:另一个选项:
var arr = $("input, textarea").map(function() {
try {
return /\s*extra_(\d+)\s*/.exec(this.className)[1];
} catch (e) {
return null;
}
}).get();
演示:jup或您可以使用replace('extra_','')不是避免异常所需的筛选器吗?jup或您可以使用replace('extra_','')不是避免异常所需的筛选器吗?我认为这不是问题所在。该属性以选择器开头,不检查每个单独的类名,它检查整个类属性字符串
“some_class extra_4 some_class 2”
;这种方法只适用于
我不认为这是问题所在。属性以选择器开头,它不检查每个单独的类名,而是检查整个类属性字符串“some_class extra_4 some_class 2”
;此方法仅适用于我使用的/\s*extra\ud(\d+)\s*/.exec(this.className)[1];很好,谢谢you@mgalesic不客气!正则表达式的另一个变体是将\s*
更改为\b
,如下所示:/\bextra\ud(\d+)\b/
。它也会起作用。我使用了/\s*extra_uz(\d+)\s*/.exec(this.className)[1];很好,谢谢you@mgalesic不客气!正则表达式的另一个变体是将\s*
更改为\b
,如下所示:/\bextra\ud(\d+)\b/
。它也会起作用。