在回调函数中访问$(this)

时间:2009-05-05 14:27:31

标签: jquery

我正在努力将prompt()更改为jPrompt(),因为IE会阻止prompt()运行。问题是$(this)不再正常工作,因为jPrompt()不返回值,而是使用回调函数。

所以我想说我有类似的东西,它有效:

$("a.foo").click(function(){
    $(this).text(prompt("Type Something",""));
}

当我将其转换为此时,它会中断:

$("a.foo").click(function(){
    jPrompt("Type something:","","", function(r) {
        $(this).text(r);
    }
}

如何正确访问$(this)?

3 个答案:

答案 0 :(得分:5)

试试这个:

$("a.foo").click(function(){
    var that = this;
    jPrompt("Type something:","","", function(r) {
        $(that).text(r);
    }
}

答案 1 :(得分:1)

您可以使用闭包:

$("a.foo").click(
  function(){
    var self = this;
    return function() {
      jPrompt("Type something:", "", "", function(r) { 
        $(self).text(r); 
      });
    }
  }()
);

答案 2 :(得分:0)

问题是你试图将'r'作为一个元素来访问。 jPrompt将传递输入为“r”的文本。

$("a.foo").click(function(){
    jPrompt("Type something:","","", function(r){
        alert(r); //This will show the text entered.
    });
});