2016-10-08 6 views
0

情報を動的に取り込むループがあります。私は「AJAX」を呼び出しています特定のdivをクリックする上jQueryで現在の要素をクラス内部で選択する方法は?

<div class="main"> 

<div class="more"> 
    more 
</div> 
<span></span> 
    .... 
<div class="more"> 
    more 
</div> 
<span></span> 

</div> 

- 成功には、私はいくつかの内容と、その特定のdivの内容と次のスパンを上書きしたいです。

$(document).on("click", ".more", function (event) { 
      $.ajax({ 
       url: '..', 
       datatype: 'application/json', 
       success: function (data) { 
        $(".more",this).html("Update Dev"); //update div 
        $(".more",this).find('span:first').text("Update Span"); //update span 
       }, 
       error: function() { alert('something bad happened'); } 
      }); 
     }); 

クリックされた要素にはどのようにアクセスしますか。

おかげ

+0

$(これは必要なものです) –

+0

使用event.target – user3599803

+0

複製のhttp://stackoverflow.com/questions/2643798/how-to-access-the-this-inside-ajax-success-callback-function –

答えて

2

あなたは、クリックされたボタンを取得するにはクリックハンドラ内$(this)を使用することができます。 AJAXコールバックではなく、クリックハンドラでキャプチャするようにしてください:

$(document).on("click", ".more", function (event) { 
    var clickedDiv = $(this); // <- capture clicked div to variable 

    $.ajax({ 
     url: '..', 
     datatype: 'application/json', 
     success: function (data) { 
      // use captured div to set the contents 
      clickedDiv.html("Update Dev"); 
      // use captured div and function next() to get the span element 
      clickedDiv.next('span').html("Updated span"); // then update span 
     }, 
     error: function() { alert('something bad happened'); } 
    }); 
}); 
+0

説明のためにあまりにもありがとう。スパンは更新されません。私は 'clickedDiv.next( 'span').html(" Updated span ");で修正し、うまくいきました。 – Ben

+0

@Benはい、あなたは正しいです - 私はdivからselectorをコピーしました。私は 'span'が' more'クラスを持っていないことに気付かなかった。私は答えを更新しました – dotnetom

+0

divを変更しているときなどに.animateを追加するのは簡単でしょうか?私は私の質問で指定しなかったことを知っています、それは何か簡単に追加できますか? – Ben

関連する問題