0

クラスdialogBodyでdivのコンテンツを空にしてから、返されたajax応答を追加したいと思います。以下のコードをご覧ください。私が抱えている問題は、クリックされた要素が削除されているため、.html(response)が何もしないことです。クリックされた要素が削除された後、$ this.closest('。dialogBody')であるターゲット要素を引き継ぐにはどうすればよいですか?

<div class="dialogBody">
  <p>Some content<a href="/question/33" class="ajaxReplace">Click to show question</a></p>
</div>
<script>
$(".ajaxReplace").live("click", function(e){
  e.preventDefault();
  var $this = $(this);
  $this.closest('.dialogBody').empty();          
  ajaxUrl = $(this).attr("href")+"?ajax=1";
  $.ajax({ 
    type: "POST",
    url: ajaxUrl,
    success: function(response){          
      $this.closest('.dialogBody').html(response);  
      console.log(response);
    }
  })                 
});   
</script>
4

2 に答える 2

4

それを変数に割り当てます:

$(".ajaxReplace").live("click", function(e){
  e.preventDefault();
  var $this = $(this);
  var $dBody = $this.closest('.dialogBody').empty();   // <------       
  ajaxUrl = $(this).attr("href")+"?ajax=1";
  $.ajax({ 
    type: "POST",
    url: ajaxUrl,
    success: function(response){          
      $dBody.html(response);  // <------
      console.log(response);
    }
  })                 
});  
于 2012-10-30T21:10:31.303 に答える
2

削除される要素への参照を保存する代わりに、必要な要素への参照を保存します。

$(".ajaxReplace").live("click", function(e){
  e.preventDefault();
  var ajaxUrl = $(this).attr("href")+"?ajax=1",
      $thisDialog = $(this).closest('.dialogBody').empty();          
  $.ajax({ 
    type: "POST",
    url: ajaxUrl,
    success: function(response){          
      $thisDialog.html(response);  
      console.log(response);
    }
  })                 
});  

また、要素を削除する前にajaxUrl、割り当てをに移動する必要があります。this

于 2012-10-30T21:10:56.217 に答える