2009-07-23 161 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在更高的范围,在第一个函数声明之外,或者只是在第二个函数的范围内再次定义它。

相关问题