发布
社区首页 >问答首页 >jquery - $(this)....$.post内幕

jquery - $(this)....$.post内幕
EN

Stack Overflow用户
提问于 2013-04-30 06:36:55
回答 2查看 425关注 0票数 1

这是我的代码

代码语言:javascript
代码运行次数:0
复制
$("#idselectB").click(function() {
    var id = $("#idselectB option:selected").text();
    $.post('elegir.php', {'id': id}, function (data) {
         $(this).closest(':input').val(data);
    });
});

当我在下拉列表中单击时,会得到选中的值。然后我将值发送给elegir.php,它会返回一个字符串。最后,我想将这个字符串插入到最接近的输入中。

如果我执行alert($(this).closest(':input').val(data));,这将返回我:[object Object]

?如何将返回值插入到我想要插入的位置?

我有很多输入文本,所以我需要closest()

EN

回答 2

Stack Overflow用户

发布于 2013-04-30 06:39:37

您需要将对单击的元素的引用存储在某个位置:

代码语言:javascript
代码运行次数:0
复制
$("#idselectB").click(function() {
    var id = $("#idselectB option:selected").text(),
        that = this; // this is a reference to a clicked object

    $.post('elegir.php', {'id': id}, function (data) {
         $(that).closest(':input').val(data);
    });
});
票数 3
EN

Stack Overflow用户

发布于 2013-04-30 06:42:29

有两种常用的方法。

您可以将引用从this复制到局部变量中,该变量将被捕获在回调函数的闭包中,以便您也可以在那里使用它:

代码语言:javascript
代码运行次数:0
复制
$("#idselectB").click(function() {
  var id = $("#idselectB option:selected").text();
  var t = this;
  $.post('elegir.php', {'id': id}, function (data) {
     $(t).closest(':input').val(data);
  });
});

您可以使用proxy method设置回调函数的上下文

代码语言:javascript
代码运行次数:0
复制
$("#idselectB").click(function() {
  var id = $("#idselectB option:selected").text();
  $.post('elegir.php', {'id': id}, $.proxy(function (data) {
     $(this).closest(':input').val(data);
  }, this));
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16289385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档