2009-07-23 56 views
0

在此示例中:在多個函數中使用變量

我想使用在最後一個(第二個)函數的第二個函數中定義的「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',並且由於關閉,這兩個函數都可用。

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

如果您向我們展示您的HTML並告訴我們您正在嘗試做什麼,我們可能會找到避免使用這種id的方法。 [提示:看看jQuery中可用的數據方法。]

0

問題是id不存在於當前作用域的第二個函數中;它只在第一個被定義。

要做到這一點的唯一方法是定義id在更高的範圍,在第一個函數聲明之外,或者只是在第二個函數的範圍內再次定義它。