jquery - $(this)....在$ .post里面

时间:2013-04-29 22:36:55

标签: jquery

这是我的代码

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

2 个答案:

答案 0 :(得分: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);
    });
});

答案 1 :(得分: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 method

设置回调函数的上下文
$("#idselectB").click(function() {
  var id = $("#idselectB option:selected").text();
  $.post('elegir.php', {'id': id}, $.proxy(function (data) {
     $(this).closest(':input').val(data);
  }, this));
});