2

我正在尝试使用 $.get 将 div 替换为其更新版本。我正在做这样的事情:

$('.clickable').click( function() { 
   $.get(url, function(data) {
      $(this).replaceWith(data);
   });
});

但这似乎不起作用。我猜这个 $(this) 不喜欢这样改变,或者它应该工作吗?如果我不想通过搜索数据来检索当前 div 的属性值,有可能吗?

编辑:删除$.get(url + ' #' + $(this).attr('id'),因为它似乎 $.get 实际上不像 load() 。因此,替换的 div 将显示整个数据......如果有人有适当的解决方案来选择部分数据,我将不胜感激。添加评论或其他内容。

4

3 回答 3

1
$('.clickable').click( function() { 
   $.get(url + ' #' + $(this).attr('id'), function(data) {
      $(this).replaceWith(data); // here
   });
});

在你的回调范围内,this指的是回调本身。使用另一个变量临时存储可点击:

$('.clickable').click( function() { 
   var that = this;
   $.get(url + ' #' + $(this).attr('id'), function(data) {
      $(that).replaceWith(data);
   });
});
于 2012-08-07T13:45:36.843 回答
1

在你$.get的功能中,有一个新的范围,所以this不是this以前的。您可以将其保存在变量中:

$('.clickable').click( function() { 
   var elem = this;
   $.get(url + ' #' + $(this).attr('id'), function(data) {
      $(elem).replaceWith(data);
   });
});
于 2012-08-07T13:45:45.960 回答
1

this 指的是 get 对象,您可以在调用 get 操作之前将其设置为标识符,即

$('.clickable').click( function() { 
   var replaceable = this;
   $.get(url + ' #' + $(this).attr('id'), function(data) {
      $(replaceable).replaceWith(data);
   });
});
于 2012-08-07T13:49:10.267 回答