jQuery.fn.testeee = function(_msg)
{
alert(_msg);
$(this[0]).overlay({
onBeforeLoad: function()
{
alert(_msg);
}
}).load();
};
$("#popup").testeee ('test');
$("#popup").testeee ('another_test');
显示:
指定给onBeforeLoad的de匿名函数内的alert()会一直显示“test”。我试试这个:
jQuery.fn.testeee = function(_msg)
{
alert(_msg);
$(this[0]).overlay({
onBeforeLoad: static_func(_msg)
}).load();
};
function static_func(_msg)
{
alert(_msg);
}
$("#popup").testeee ('test');
$("#popup").testeee ('another_test');
它运作得很好。它显示:
有人知道为什么会这样吗?
答案 0 :(得分:2)
如果您创建这样的对象:
{
onBeforeLoad: static_func(_msg)
}
它没有指定要调用的函数,而是立即调用函数并将返回值存储在对象中。
要指定要呼叫的功能,请仅使用功能名称:
{
onBeforeLoad: static_func
}
如果要使用自己指定的参数调用函数,则必须通过将其包装在匿名函数中来创建包含变量的闭包:
{
onBeforeLoad: function() { static_func(_msg) }
}