2017-06-27 12 views
1

私はプロジェクトのためにjQueryと意味UIを使用していますが、私は第2のthisが参照しているものにこだわりました。第二のこれは何を指しているでしょうか?私は途中でjQueryの新機能です。私は#sideBarを参照するようにしたいが、クラスを追加しようとするたびにうまくいきません。この文脈では、これはどのようなキーワードですか?

すべてのクラスを削除してから、それらのすべてにアイテムを追加してから、アンカータグの属性をその名前としてtextContentを持つクラスで設定します。

$('#sideBar a').on('click', function(){ 
    $('#sideBar a').removeClass().addClass("item"); 
    var addC = ($(this).text()); 
    $(this).addClass(addC); 
}); 

誰もが、私はあなたのイベントの対象となる非矢印機能を備えた道の内側

+5

これは、最初の 'this'が参照しているのと同じこと、クリックされた' #sidebar a'要素を参照します。 – KyleS

答えて

2

thisとイベントリスナによってJavaScriptで呼び出し、バインドを適用するいくつかの知識を持ってこれを行う方法を教えてもらえ:

$('#sideBar a').on('click', function (event) { 
    // next line removes all classes from all anchor elements that are children of #sideBar then adds the class item to each of them 
    $('#sideBar a').removeClass().addClass("item"); 
    // sets addC to whatever the event target's text is 
    var addC = ($(this).text()); 
    // adds the text stored in addC as a class to the event target 
    $(this).addClass(addC); 

    console.log(this === event.target); // logs true 

}); 

編集:

$(this).parents('#sideBar').first().addClass(addC);代わりの:私はちょうど私があなたの質問に答えなかった実現10はそのトリックを行うべきです。

+0

このコードは、ありがとうございます。しかし、私の元の非作業コードとあなたのコードとの違いを私に説明することができます、なぜあなたの作品と私のコードdidnt? –

+0

'#sideBar'要素にクラスを追加します。イベントハンドラでは、 'event.target'は'#sideBar'の子であるので、 '.parents( '#sideBar')'でツリーをバックアップし、最初のものをつかんでクラスを追加します。 – Brian

関連する問題