1

这是我的代码

$("#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()

4

2 回答 2

3

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

$("#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);
    });
});
于 2013-04-29T22:39:37.160 回答
1

有两种常用的方法。

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

$("#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您可以使用以下方法设置回调函数的上下文:

$("#idselectB").click(function() {
  var id = $("#idselectB option:selected").text();
  $.post('elegir.php', {'id': id}, $.proxy(function (data) {
     $(this).closest(':input').val(data);
  }, this));
});
于 2013-04-29T22:42:29.410 回答