2012-03-27 6 views
18
var playerClass = $(this).parent().attr('class') 

domから特定のクラスを選択することについて質問します。jQuery match regex

この行に追加できるのは、player-1、player-2のクラスを持つクラスだけです。基本的に接頭辞がplayer-の後に数字が続きます。

答えて

43

私は4つの可能性を、あなたの質問に求めていた、まさに言うので、ここにいることができませんでした。うまくいけば、これらのうちの1つがあなたが尋ねようとしていたものと一致するか、あるいはそれらの1つをわずかに変更して適合させることができます

xxは数ある player-xxのクラスを持つすべての入力項目を選択するには、この操作を行うことができます。

var playerClass = $('input[class^="player-"]').filter(function() { 
    return((" " + this.className + " ").match(/\splayer-\d+\s/) != null); 
}); 

最初のjQueryのセレクタは"player-"で始まる任意のクラス名を取得します。フィルタは、"player-nn"以外の項目を削除します。

あなただけの、あなたはこのようにそれを行うことができ、一つの特定のクラス名がplayer-nnが含まれているかどうかを検討しようとしている場合:

if ((" " + $(this).parent().attr('class') + " ").match(/\splayer-\d+\s/) != null) { 
    // the parent has player-nn as a class 
} 

あなただけの親に一致するクラスを取得したい場合は、行うことができます

var matches = (" " + $(this).parent().attr('class') + " ").match(/\s(player-\d+)\s/); 
if (matches) { 
    playerClass = matches[1]; 
} 

あなたが実際にplayer-後に番号を取得しようとしている場合、あなたはこのようにそれを行うことができます:

これでその

注:これらの例では、全体的なクラス名の先頭と最後に空白を追加すると、正規表現で探すことができるというトリック(jQueryから学んだこと)を使用していますあなたの特定のクラス名は、両側を空白で囲みます。これにより、より長いクラス名の一部に一致しないようになり、クラス名全体にのみ一致します。 jQueryはこのトリックを.hasClass()実装で使用しています。

+0

あなたに提供できる追加のリクエストが1つあります。どのようにすれば、それが "not-pictured"クラスにも一致するかどうかを確認する追加のリクエストを提供することができます ここに私が現在使っているコードです今すぐ.. var playerClass = $(this).parent()。attr( 'class')。あなたが 'not-pictured'を同じ正規表現に追加したいのであれば、あなたはこれを次のようにすることができます:' match(/ \ bplayer- \ S + |/bplayer- \ S +/g) – Greg

+0

画像なし/ g) '。それがあなたの望むものでないなら、私はあなたの新しい質問を理解していないので、明確にしてください。 – jfriend00

+0

これはカンマ区切りに戻していますが、正常に動作しています... player-3、not-pictured 「player-3 not-pictured」を取得する方法はありますか? – Greg

2

は "player-" で始まるクラス名を持つすべてのinputの要素を選択するには、これを使用することができます

var playerClass = $('input[class^="player-"]'); 

ここでは、「開始」セレクタについて説明します。http://api.jquery.com/attribute-starts-with-selector/

これは "player-"の直後に数字が続くことを保証しません。

5

私は、これは何が必要だと思う:

var playerClass = $(this).parent().attr('class').match(/player-\d+/);