有一个Jquery选择器可以工作,但不能在$.post中工作

有一个Jquery选择器可以工作,但不能在$.post中工作,jquery,post,Jquery,Post,我有一个Jquery行,它可以找到我想要输入数据的单元格,当我在$.post函数(下面)之外使用它时,它就起作用了,但在$.post函数内却不起作用 $(this).parent().parent().find(".total_item_price").html("new text"); 但当我在下面的示例中使用上面的行时,它不起作用。它不会更新必填字段中的文本 $.post(url, { "params": value}, function(data) { // Thi

我有一个Jquery行,它可以找到我想要输入数据的单元格,当我在$.post函数(下面)之外使用它时,它就起作用了,但在$.post函数内却不起作用

$(this).parent().parent().find(".total_item_price").html("new text");
但当我在下面的示例中使用上面的行时,它不起作用。它不会更新必填字段中的文本

$.post(url, { "params": value}, function(data) {

          // This is where I am having a problem
          // also tried .text and .val
          $(this).parent().parent().find(".total_item_price").html(data.total_price_item);

          alert(data.total_price_item); // This outputs my data
       }, "JSON"); 
我基本上希望将返回的(数据)放入表的单元格中。我不认为我的表结构是个问题,但如果需要,我可以发布它

我应该补充一点,我必须找到父函数和字段,因为每个post函数将输出到不同的单元格中,因此它与用户单击的位置有关


此代码出了什么问题?

因为加载回调内部的
不等于加载回调外部的
。它们有不同的范围

在调用post之前,将另一个作用域中的
this
缓存到一个变量中:

var scope = this;
然后在回调中,您可以将另一个
引用为
范围

$(scope).parent().parent().find(".total_item_price").html(data.total_price_item);

$.post
中,此
将不会指向您正在思考的相同元素。请使用实际的选择器使其工作。

因为函数中的“this”是对函数的引用,而不是对节点的引用

($this)
不是你想象的那样
始终是正在执行的函数的所有者,该函数位于
$中。post
回调函数

你可以这样做

  var a= $(this);
  $.post(url, { "params": value}, function(data) {

          // This is where I am having a problem
          // also tried .text and .val
          a.parent().parent().find(".total_item_price").html(data.total_price_item);

          alert(data.total_price_item); // This outputs my data
       }, "JSON"); 
$(此)
在那里不起作用。因为它在回调函数的作用域中,而不是单击事件

$(this)
分配给post外部(单击事件处理程序内部)的变量,然后在post回调中使用该变量

  var that = $(this);
  $.post(url, { "params": value}, function(data) {
      that.parent().parent().find(".total_item_price").html(data.total_price_item);
      alert(data.total_price_item); // This outputs my data
  }, "JSON");