2016-01-11 32 views
0

我使用Wordpress AJAX顯示一些結果。 該函數運行良好,但顯示結果$(this)不起作用。

我的代碼如下:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
    $("a.review_status").live("click", function() { 

     var id = $(this).attr("id"); 
     dataString = 'id=' + id; 
     jQuery.ajax({ 
      type: "POST", 
      url: "<?php echo $ajax_status_url; ?>", 
      data: dataString, 
      cache: false, 
      success: function (html) { 
       $(this).text(html); 
      } 
     }); 

    }); 
}); 
</script> 

在這種AJAX是不是給我正確的結果。

+0

你缺少的動作值所以沒有功能被稱爲。我認爲live也是貶值的 – David

+0

在ajax響應中,$(this)的範圍被更新,因此爲$(this)聲明一些變量並全部使用它。 – Milap

回答

1

使用此代碼,而不是上面的代碼:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
$("a.review_status").live("click", function() { 
    var element = $(this); 
    var id = $(this).attr("id"); 
    dataString = 'id=' + id; 
    jQuery.ajax({ 
     type: "POST", 
     url: "<?php echo $ajax_status_url; ?>", 
     data: dataString, 
     cache: false, 
     success: function (html) { 
      $(element).text(html); 
     } 
    }); 

}); 
}); 
</script> 
3

ajax成功回調中的上下文有變化。在成功功能中對this的引用指向成功功能本身,而不是指向被點擊的元素。

解決此問題的方法是將對this的引用存儲爲self。例如:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
    $("a.review_status").live("click", function() { 

     var self = this; 

     var id = $(this).attr("id"); 
     dataString = 'id=' + id; 
     jQuery.ajax({ 
      type: "POST", 
      url: "<?php echo $ajax_status_url; ?>", 
      data: dataString, 
      cache: false, 
      success: function (html) { 
       $(self).text(html); 
      } 
     }); 

    }); 
}); 
</script> 
1

嘗試的jQuery代替$

<script type="text/javascript"> 
jQuery(document).ready(function() { 
jQuery("a.review_status").live("click", function() { 
    var element = jQuery(this); 
    var id = jQuery(this).attr("id"); 
    dataString = 'id=' + id; 
    jQuery.ajax({ 
     type: "POST", 
     url: "<?php echo $ajax_status_url; ?>", 
     data: dataString, 
     cache: false, 
     success: function (html) { 
      jQuery(element).text(html); 
     } 
    }); 

}); 
}); 
</script> 
相關問題