2011-04-02 6 views
2

私は自分のページにいくつかのリンクを持ち、ユーザーがクリックしたときにJQueryスクリプトを実行したいと思っています。以前はリンクに一意のIDを追加しました。私のクリックイベントでクリックしたリンクのクラスを確認する方法

<a id="user_1" class="mylink"> 

私はその後、IDを抽出し、今、私は私のページには、同じIDを持つ複数のリンクを持っているかもしれない問題があり、そしてもちろんだということ

userid = $(this).attr('id').split('_')[1]; 

上で処理を開始しました不可能(afaik)。だからクラスとして追加する必要があると思いますよね?例えば

<a class="mylink user_1"> 

これが最善の方法ですか?そして、私はどのようにしてクラスからuserID( '1')を抽出できますか?もちろん、jQuery-Scriptでは、クラス 'user _ ,,,'がないa-linkもあることに注意してください。 事前に感謝します!

答えて

5

これを行う最も良い方法は、カスタムdata-*属性です。これらはHTML5標準に準拠しており、その標準より古いブラウザで普遍的に機能します。

だからあなたのリンクは次のようになります。

<a data-user="1" class="mylink"> 

あなたのクリックハンドラは、次のようになります。

$('a').click(function(){ 
    var userId = $(this).data('user'); 
}); 

これはdata輸入data-*属性ために動作します。

data-user属性セットがない場合、userIdundefinedになります。

+0

Brillant!私はjQuery 1.4.3で実装されたこの新機能について読んだことがありますが、HTML5のみに制限されていると思いました。どうもありがとう!! – K232

1

this.classNameまたはあなたはjQueryオブジェクトを使用してそれを実行したい場合は(そうする正当な理由がない):$(this).attr('className')

この文字列から、あなたは正規表現(/userid_([0-9]+)/)でIDを抽出でき...


ただし、HTML5 data-属性を使用する方が効果的です。ブラウザは、彼らが何かを壊さないとHTML4やXHTMLで正常に動作します未知の属性について非常に寛容であるので:

<a class="mylink" data-userid="1">---</a> 
... 
var userid = $(this).data('userid'); 

素敵な事がある:あなたがデータ属性に有効なJSONを置けば、.data('yourAttr')は自動的にオブジェクトを返します。文字列の代わりに。

+0

ワークス優れ、多くの感謝をお試しください! – K232

0
+0

これは実際に私が持っているコードですが、解決策ではありません....?これは名前からIDを抽出しないので、それは一歩後退しています。 – K232

関連する問題