Доступ к $ (this) в функции обратного вызова - PullRequest
1 голос
/ 05 мая 2009

Я работаю над изменением 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 ]

5 голосов
/ 05 мая 2009

Попробуйте это:

$("a.foo").click(function(){
    var that = this;
    jPrompt("Type something:","","", function(r) {
        $(that).text(r);
    }
}
1 голос
/ 05 мая 2009

Вы можете использовать замыкание:

$("a.foo").click(
  function(){
    var self = this;
    return function() {
      jPrompt("Type something:", "", "", function(r) { 
        $(self).text(r); 
      });
    }
  }()
);
0 голосов
/ 05 мая 2009

Проблема в том, что вы пытаетесь получить доступ к 'r' как к элементу. jPrompt пропустит текст, введенный как 'r'.

$("a.foo").click(function(){
    jPrompt("Type something:","","", function(r){
        alert(r); //This will show the text entered.
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...