我正在开发一个应用程序,该应用程序迭代一些DOM元素,并对这些元素中的每一个执行Ajax请求。问题是我无法访问回调函数中的每个DOM元素。

$('.class').each(function() {
    $.getJSON(url, function(data) {
        $(this).attr('id', data.id); // $(this) is not accessible
    });
});

有办法解决吗?

最佳答案

您应该使用一个变量,因为每个函数调用的this的值都会变化,并且$ .getJSON的回调在this内不再是该元素。

$('.class').each(function() {

    var self = this;

    $.getJSON(url, function(data) {
        self.id = data.id;
    });
});

另一个选择是each()中的内置参数
$('.class').each(function(index, element) {
    $.getJSON(url, function(data) {
        element.id = data.id;
    });
});

09-25 17:20
查看更多