【发布时间】:2011-09-08 15:00:03
【问题描述】:
我喜欢将我的所有 JQuery 函数和事件接收器的范围限定为 $(window).load,如下所示:
$(window).load(function ()
{
function Foo(id)
{
alert(String.format("Do Foo for: {0}", id));
}
});
通常,我在此范围内完成所有工作,但我有一个案例,我想从由独立 JQuery 小部件构建的 HREF 调用 Foo(27)。 HREF 如下所示:
<a href="javascript:Foo(27)">Click me!</a>
但是,当我单击链接时,找不到 Foo() 函数。我怎样才能做到这一点?
[编辑]
所以,我刚刚接受了下面的答案,并想分享我的最终实现。 Foo() 已替换为我正在使用的实际方法的名称。是的,我知道 String.format() 本身并不存在;它是我自己的基础库的一部分。考虑到这一点,这就是我所拥有的。这是来自我定义所有全局名称空间的文件。此定义存在于 jQuery 范围之外。
// This is defined in the global namespace
if (typeof (window.App) === "undefined")
{
window.App = {};
}
这是构建 HREF 的 jQuery 小部件中的一行。标题用于预测,HREF 导航到该预测的详细信息页面:
r = String.format('<a href="javascript:App.NavDetails({1});" class="link3">{0}</a>',
Predikt.General.EncodeHtml(options.rowData.Title),
options.rowData.PredictionId);
这是我的 $(window).load()-scoped jQuery 文件中 NavDetails 函数的实际实现:
$(window).load(function ()
{
App.NavDetails = function (id)
{
// Do something interesting with the ID here...
alert(String.format("The ID is: {0}", id));
};
});
【问题讨论】:
-
javascript 中没有
String.format。还请详细说明您想在加载时传递给Foo的内容?
标签: javascript jquery scope href