2009-07-23 10 views
0

Dans cet exemple:Utilisation des variables dans la fonction multiple

je voudrais utiliser le « id » qui est défini dans la deuxième fonction dans la dernière fonction (seconde). Je pensais que l'utilisation du terme "var" suffirait mais ce n'est pas le cas.

Est-ce que quelqu'un sait comment je pourrais le faire?

jQuery("td.setting").live("click",function(){ 
      text = jQuery(this).text(); 
      var id = jQuery(this).attr("id"); 

      jQuery(this).replaceWith("<td class=\"update\"><input class='inputSetting' type='text' value="+text+"> <img class=\"accept\" alt=\"accept button\" src='images/accept.png'></td>"); 
      console.log(id); 
    }); 
    jQuery("img.accept").live("click",function(){ 

      jQuery("td.update").replaceWith("<td class=\"setting\"><proc name='C_Settings::getSavedSetting' params='"+id+"'></proc></td>"); 
    }); 

Répondre

1

Si vous utilisez var, la variable devient locale pour cette fonction. Vous voudrez peut-être définir 'id' en dehors des deux fonctions et il sera disponible pour les deux fonctions en raison de fermetures.

var id = null; 
jQuery("td.setting").live("click",function(){ 
         text = jQuery(this).text(); 
         id = jQuery(this).attr("id"); 

         jQuery(this).replaceWith("<td class=\"update\"><input class='inputSetting' type='text' value="+text+"> <img class=\"accept\" alt=\"accept button\" src='images/accept.png'></td>"); 
         console.log(id); 
     }); 
     jQuery("img.accept").live("click",function(){ 

         jQuery("td.update").replaceWith("<td class=\"setting\"><proc name='C_Settings::getSavedSetting' params='"+id+"'></proc></td>"); 
    }); 

Si vous nous montrez votre HTML et dites-nous ce que vous essayez de faire, nous pouvons sans doute trouver un moyen d'éviter d'utiliser id comme ça. [Astuce: Regardez la méthode de données disponible dans jQuery.]

0

Le problème est id n'existe pas dans la portée actuelle de la deuxième fonction; ça n'a été défini que dans le premier. La seule façon de le faire est de définir id à une portée plus élevée, en dehors de la première déclaration de fonction, ou simplement de le définir à nouveau dans le cadre de la deuxième fonction.

Questions connexes