2017-11-13 17 views
0

を強調しているマルチクラス要素からクラス名を取得します。私は次のような要素を持っている

<div class="busatt bus_12_1">data</div> //classname->bus_databasevalue1_databasevalue2 

私はit.Iに下線たクラスは、それので、ID名として、このクラス名を置くことはできません取得する必要があります時折複製することができます。

私はこれのようなものが必要です。

$('busatt').prop('class').match(some regex exp) should give me only ''bus_12_1'' . 

私たちは、次のようなクラス名を取得することができることを知っている:

var classes = $('busatt').prop('class').split(' '); 
    for(var i=0; i<classes.length; i++){ 
     if(classes[i].indexOf('_') != -1) 
     { 
      alert(classes[i]); 
     } 
    } 

は、私はあなたが使用することができます

+0

'$(」busatt ').filter(function(){return/\bbus_\d+_¥d+\b/i.test($(this).attr('class'));}); 'クラス名には常に2つの数字。 'data- *'属性を使ってHTML要素にカスタムデータを格納することをお勧めします。 – Tushar

答えて

1

のような正規表現か何かで1行のコードの結果を得ることができますfilter()は、一致する要素のセットを減らす機能を持っています。 これは小さなデモです:私は、次のコードを使用していると働いている

:テッキーBY

$("div").filter(function() { 
 
     return this.className.match(/\b\w*_\w*\b/); 
 
    }) 
 
    .html("Matched!");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="busatt bus_12_1">data</div>

EDIT。

var new_class=''; 
new_class = $(this).prop('class').match(/\b\w*_\w*\b/).toString(); 
alert(new_class); 
+2

これはCSSセレクタであり、OPが望むのは '$(" * [class^= 'busatt'] [class * = '_' "]です。className.match(/ \ b \ w * _ \ w * b /); ' – revo

+0

@Mehdi Bouzidiさらなる要件のためにクラス名を文字列内で取得する必要があります。あなたはアンダースコアで要素を識別するコードを私に渡しました.. – Techy

+0

@revo編集した答えに 'regex'を追加しました。ありがとうございます! –

関連する問題