2009-07-23 8 views
0

使用:この例では、複数の関数の変数

Iは、最後の(第2の)関数で第二の機能で定義されている「ID」を使用したいです。私は "var"という用語で十分だと思ったが、そうはしない。

どのように私はそれを行うことができます知っていますか?

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>"); 
    }); 

答えて

1

varを使用すると、変数はその関数のローカルになります。両方の関数の外側で 'id'を定義したい場合は、クロージャのために両方の関数で使用できるようになります。あなたが私達にあなたのHTMLを表示し、あなたがやろうとしているものを教えている場合

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>"); 
    }); 

は、我々は、おそらくこのようにIDを使用して回避する方法を見つけることができます。 [ヒント:jQueryで利用できるデータメソッドを見てください]

0

問題はidは2番目の関数の現在のスコープには存在しません。それは最初に定義されただけです。

idを最初の関数宣言の外側で定義するか、2番目の関数のスコープ内で再び定義するかのいずれかの方法があります。

関連する問題