[英]Access DOM element inside $.getJSON
我正在开发一个迭代一些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;
});
});
您可以这样做,而不必执行任务。
$.getJSON(url, function(data) {
$(this).attr('id', data.id); // $(this) is accessible
}.call(this));
演示: http : //jsfiddle.net/8EWvC/4/
您可以将选择器缓存在类似它的变量中:
$('.class').each(function() {
var $this = $(this); // cache it here
$.getJSON(url, function(data) {
$this.attr('id', data.id); // $(this) is not accessible
});
});
或者如果你能够将$.getJson()
更改为传统的$.ajax()
那么你可以使用context:this,
param:
$('.class').each(function() {
$.ajax({
url : url,
dataType: 'json',
context: this,
success: function(data) {
this.id = data.id; // $(this) is not accessible
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.