在这个例子中:
我想使用在最后一个(第二个)函数中的第二个函数中定义的“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>");
});
答案 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
,或者在第二个函数的范围内再次定义它。