2009-05-05 5 views
1

Я работаю над изменением приглашения() на 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); 
    } 
} 

Как получить доступ к $ (это) правильно?

ответ

5

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

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

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

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

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

$("a.foo").click(function(){ 
    jPrompt("Type something:","","", function(r){ 
     alert(r); //This will show the text entered. 
    }); 
}); 
Смежные вопросы