javascript - 如何从 HREF 调用 $(window).load 中定义的 JQuery 函数

标签 javascript jquery scope href

我喜欢将所有 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() 本身并不存在;它是我自己的基础库的一部分。考虑到这一点,这就是我所得到的。这是来 self 定义所有全局命名空间的文件。此定义存在于 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() 范围的 jQuery 文件中 NavDetails 函数的实际实现:

$(window).load(function ()
{
   App.NavDetails = function (id)
   {
      // Do something interesting with the ID here...
      alert(String.format("The ID is: {0}", id));
   };
});

最佳答案

你可以这样做

$(window).load(function (){
    window.Foo =  function(n){
      alert(n);
   }
});

http://jsfiddle.net/JQn8H/

或者这个

var Foo;

$(window).load(function (){
    Foo =  function (n){
      alert(n);
   }
});

http://jsfiddle.net/JQn8H/2/

IMO,更好的方法是为您的应用程序设置一个命名空间,这样就不会污染全局命名空间

window.App = {};

$(window).load(function (){
   App.Foo =  function (n){
      alert(n);
   }
});

然后,在你的 html 中你可以调用它:

<a href="javascript:App.Foo(27)">Click me!</a>

http://jsfiddle.net/JQn8H/3/

但是,您可能需要考虑从脚本而不是标记中调用它。

关于javascript - 如何从 HREF 调用 $(window).load 中定义的 JQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241097/

相关文章:

javascript - 仅隐藏和显示直接子项的第 n 项之后的 div 列表项

javascript - jquery fade div颜色改变

java - Tomcat:Java 静态变量作用域、应用程序或 session 范围?

android - Dagger 2 瞄准镜说明

javascript - 记录 IP、时间和用户代理

javascript - react 钩子(Hook) useEffect 更新 window.innerHeight

javascript - 如果执行了 anchor href 链接,则禁用 onClick 事件

javascript - Firefox 上神秘的 jPlayer 2.0.0 错误

javascript - 使用 setLabel 方法将 CSS 应用于卡住列的标题

javascript - 是否有一种方法可以访问函数父作用域中的变量