获取元素类名称的一部分

时间:2012-08-30 09:02:23

标签: 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

或完整的课程:

extra1,extra_4,extra_17

4 个答案:

答案 0 :(得分:3)

另一种选择:

var arr = $("input, textarea").map(function() {
    try {
        return /\s*extra_(\d+)\s*/.exec(this.className)[1];
    } catch (e) {
        return null;
    }
}).get();

DEMO: http://jsfiddle.net/nh7sv/

答案 1 :(得分:2)

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]

答案 2 :(得分:1)

获取以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); 
});

要获取包含extra_的所有元素并返回数字: -

var t = $('[class*=extra_]').map(function() {
  return this.className.match(/extra_\d+/)[0].split('_')[1];
});

returns ["1", "42", "17"] 

答案 3 :(得分:1)

http://jsfiddle.net/LLeQF/

$('input, textarea').filter('[class*="extra_"]').each( function() {
    var num = $(this).attr('class').split('extra_')[1].split(' ')[0];
    alert( num );
});