我的文档中有一些包含图像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请求后使用响应?
答案 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?