2009-05-05 3 views
1

Je travaille sur la modification de prompt() en jPrompt() car IE empêche l'exécution de prompt(). Le problème est que $ (this) ne fonctionne plus correctement car jPrompt() ne renvoie pas de valeur, mais utilise une fonction de rappel.

Disons donc que j'ai quelque chose comme ça, qui fonctionne:

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

Quand je le convertir en cela, il se brise:

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

Comment puis-je accéder $ (this) correctement?

Répondre

5

Essayez ceci:

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

Vous pouvez utiliser une fermeture:

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

Le problème est que vous essayez d'accéder à la 'r' comme un élément. jPrompt va passer le texte entré comme 'r'.

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