没有办法,调用比undefined
其他cap_check
将时刻警惕任何东西。一个函数不是一个静态对象。当你调用一个函数时,它会在内部堆栈上创建一个新实例。 row
将被初始化为undefined
,并且新的点击处理程序将被绑定到td
元素(也不太可能有用 - 因为每次调用cap_check
时都会绑定另一个重复事件处理程序)。
最有可能的,你想是这样的:
var cap_check=(function() {
var row;
$('td').change(function(){
row = $(this).parent().parent().children().index($(this).parent());
alert(row);
});
return function() {
alert(row);
};
}());
这是一个自动执行的功能。当脚本运行时,“返回”之前的函数部分立即执行,创建事件绑定一次,并返回一个引用原始函数实例的函数。这将创建一个关闭,这意味着该函数会维护对其父对象(在此例中为row
变量)的引用。因此,您的事件处理函数和函数cap_check
现在将始终引用row
的相同实例。
所以 - 现在任何调用cap_check
的代码将始终返回与change
事件结果相同的值。
小提琴:
http://jsfiddle.net/RagUe/5/
(请注意,我改变了“点击”,而不是“变”事件,使其容易测试)。
你能否请包括与此代码 – mcgrailm 2011-06-07 14:59:47
去看看这篇文章的HTML。这是相同的。 http://stackoverflow.com/questions/2611980/return-value-from-nested-function-in-javascript – JAiro 2011-06-07 14:59:37
@JAiro:不,它不一样。 – 2011-06-07 15:03:29