2011-07-17 3 views
1

私はデータの束を持つテーブルを持っています。各<td>$i(私は配列から自分のテーブルを構築するためにループを使用しています)に基づいてclass="person"id=0,1,2,3, etc.を含んでいます。JQuery/JSを使用して​​のIDをclick()に保存します

人(<td>)がクリックされるたびに、そのセルがCSSでハイライト表示されるようにしたいと思います。

これまでのところ私は、私は、この使用することができると思う:。

$( '人を')(関数(){

$id = some function to which attr('id') was selected???; 
$('id').addClass("highlights"); 

を})をクリックしてください。

クリックしたセルのIDをどのように取得できますか?どんな助けやアプローチも感謝します。

ありがとうございます!

答えて

2

this.idは、本方法のtdidを指す。

$('.person').click(function(){ 

    var id = this.id; 
    $('#' +id).addClass("highlights"); 

}); 

しかし、あなただけの要素に何かを変更したい場合、あなたは本当にidを必要としません。これは、thisというキーワードが実際にクリックされた要素を参照しているためです。

だから、あなたが直接( ... 限りとして有効なHTML懸念している)要素のidがcannot be numericがあること、しかし、注意してください

$('.person').click(function 
    $(this).addClass("highlights"); 
}); 

を行うことができます

そして、私は引用する

IDNAMEトークンは、文字([A-Za-z])で始まり、任意の数の文字、数字([0-9])、ハイフン( - )、アンダースコア"_")、コロン( ":")、ピリオド( "。")を使用します。

+0

優秀、ありがとう、それは予想以上に簡単でした! $(this).addClassを使用すると、そのクラスがすべての "person"クラスに適用されていると思いますが、click()がIDを返します。私はそれを次回のためにどうやって知ることができましたか? – user339946

+0

@ user339946 jqueryのイベントバインディングシステムのコアである['.bind()'](http://api.jquery.com/bind/)のドキュメントを見ると、ハンドラでは、キーワード 'this' *は、ハンドラがバインドされているDOM要素を参照します。** –

0
id = $(this).attr("id"); 

あなたがここに:)

+0

は...しないでください! jQueryを必要としない場所で使用しないでください。単純なJavaScriptを使用できます。あなたが私が何を話しているのか分からないなら、@Gaby aka G. Petrioliの答えを見てください。 – RReverser

2
$('.person').click(function(){ 

$(this).addClass("highlights"); 

}); 

時には、あなたはjQueryのでIDを忘れることができます:)

関連する問題