在多个函数中使用变量

时间:2009-07-23 14:19:18

标签: jquery

在这个例子中:

我想使用在最后一个(第二个)函数中的第二个函数中定义的“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>");
    });

2 个答案:

答案 0 :(得分: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中可用的数据方法。]

答案 1 :(得分:0)

问题是id在第二个函数的当前范围内不存在;它只在第一个中定义。

唯一的方法是在第一个函数声明之外的更高范围定义id,或者在第二个函数的范围内再次定义它。