我有这个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函数都会输出到不同的单元格中,所以它相对于用户点击的位置。
此代码出了什么问题?
答案 0 :(得分:8)
因为加载回调中的this
不等于加载回调之外的this
。它们有不同的范围。
在致电帖子之前,将this
从其他范围缓存到变量中:
var scope = this;
然后在您的回调中,您可以将其他this
引用为scope
:
$(scope).parent().parent().find(".total_item_price").html(data.total_price_item);
答案 1 :(得分:4)
在$.post
this
中,不会指向您正在考虑的相同元素。请使用实际的选择器使其正常工作。
答案 2 :(得分:4)
因为函数中的“this”是对函数的引用而不是对节点的引用!
答案 3 :(得分:4)
($this)
不是你想象的那样! this
始终正在执行的函数的所有者,$.post
中的回调函数。
答案 4 :(得分:2)
你可以这样做,
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");
答案 5 :(得分:2)
$(this)
无法在那里工作。因为它在回调函数的范围内,而不是单击事件。
将$(this)
分配给帖子之外的变量(在click事件处理程序内),然后在帖子回调中使用它。
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");