为特定元素加载AJAX内容(将DOM元素传递给AJAX回调函数)

时间:2013-11-08 12:27:28

标签: javascript jquery ajax jquery-post

我的文档中有一些包含图像ID的元素,我想用图像替换这些ID:

$(".image_id_field").each(function() {
  img_id = $(this).html();

  $.post("ajax/get_image.php", { id: img_id }, function( response) {
    // data = "<img src='path_to_image.png' />"
    // How is it possible, to get the current $(this) in here to append the response
  });
)

我有两个想法:

1。 是否有可能从成功函数中的post参数中获取给定的id以识别元素?

2。 是否可以异步制作$ post并在触发post请求后使用响应?

1 个答案:

答案 0 :(得分:0)

函数在定义变量时记住其父作用域中的变量。这称为闭包。你可以阅读它here

因此,为了保留对元素的引用,将元素存储在如下变量中:

$(".image_id_field").each(function() {
    var $this = $(this), // store the jQuery element
        img_id = $this.html();

    $.post("ajax/get_image.php", { id: img_id }, function( response) {
        // the callback function still references the $this var defined in the parent scope
        $this.html(response);
  });
)

我不确定你的第二个问题,因为$ .post调用已经是异步的。

我建议您更详细地了解变量范围,就像您创建名为img_id的全局变量的示例一样。 What is the scope of variables in JavaScript?