在循环遍历类时引用$(this)

时间:2014-09-04 14:44:49

标签: php jquery this each

我在页面上有很多表格。内容由php脚本生成,给出一个关键字(kuid - 从数据库加载)并使用jQuery加载。

在页面上,它们看起来像这样:

<table class="className" kuid="someInteger"></table>

这是我提出的jQuery:

jQuery('.className').each(function(){
  var kuid = jQuery(this).attr('kuid');
  jQuery.post('data.php',{kuid: kuid},function(data){
    jQuery(this).html(data);
  });
});

和data.php:

$kuid = $_POST['kuid'];
echo 'Content for this ID: '.$kuid.'!';

然而它会抛出'Uncaught TypeError'。显然我不允许使用$(this)关键字,但我不明白为什么。

此代码有点作用:

var kuid = jQuery('.className').attr("kuid");
jQuery.post(data.php',{kuid: kuid},function(data){
  jQuery('.className').html(data);
});

但它根据“kuid”的第一次出现给每个表提供相同的内容。

2 个答案:

答案 0 :(得分:1)

你可以使用jquery函数$ .proxy

jQuery('.className').each(function(){
  var kuid = jQuery(this).attr('kuid');
  jQuery.post('data.php',{kuid: kuid},$.proxy(function(data){
    jQuery(this).html(data);
  }, this));
});

答案 1 :(得分:0)

在进入$(this)之前,只需将post分配给变量:

jQuery('.className').each(function(){
  var kuid = jQuery(this).attr('kuid'),
      that = jQuery(this);

  jQuery.post('data.php',{kuid: kuid},function(data){
    that.html(data);
  });
});