2009-05-05 20 views
1

IEがprompt()を実行しないので、prompt()をjPrompt()に変更しようとしています。問題は、jPrompt()が値を返さず、コールバック関数を使用するため、$(this)は正しく機能しなくなりました。

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

問題は、あなたが要素としては 'r' にアクセスしようとしているということです。 jPromptは 'r'として入力されたテキストを渡します。

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