【问题标题】:Best practices for declaring functions inside jquery ready function在 jquery 就绪函数中声明函数的最佳实践
【发布时间】:2009-02-25 21:29:55
【问题描述】:

我还没有找到一个很好的参考来在

中声明我自己的函数
jquery.ready(function(){});

我想声明它们,使它们在 ready 闭包的同一范围内。我不想弄乱全局 js 命名空间,所以我不希望它们在 ready 闭包之外声明,因为它们只针对内部的代码。

那么如何声明这样一个函数...我不是指自定义 jquery 扩展方法/函数...只是一个常规的 'ol 函数,它做一些琐碎的事情,比如:

function multiple( a, b ){ 
    return a * b; 
}

我想遵循 jquery 推荐和函数声明语法。我可以通过声明一个像上面的乘法这样的函数来让它工作......但由于某种原因它对我来说看起来不正确,所以我想我只需要一些指导。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我相信您只需在 ready() 闭包中声明函数就可以了,但在这里您可以更明确地说明本地范围:

    jQuery.ready(function() {
    
         var myFunc = function() {
    
               // do some stuff here
    
         };
    
         myFunc();
    
    
    });
    

    【讨论】:

    • 宾果游戏,这就是我一直在寻找的,因为它更清楚地了解函数的范围,并且更好地遵循 jquery 语法。谢谢你的回答。
    • 对不起,如果这是一个愚蠢的评论,但这个答案让我感到困惑。函数调用不应该是“myFunc();”吗?而不是“myFunction();” ?
    【解决方案2】:

    这听起来很简单,但您只需...声明函数。 Javascript 允许函数具有内部函数。

    $(document).ready( function() {
       alert("hello! document is ready!");
    
       function multiply(a, b) {
           return a * b;
       }
    
       alert("3 times 5 is " + multiply(3, 5));
    });
    

    【讨论】:

      【解决方案3】:

      我有一个 StartUp 函数,我用它来打印如下:

      function StartUp(runnable)
      {
          $(document).ready(runnable.run);
      }
      
      var ExternalLinks =
      {
          run: function()
          {
              $('a[rel="external"]').bind('click', ExternalLinks.click);
          },
          click: function(event)
          {
              open(this.href);
              return false;
          }
      }
      StartUp(ExternalLinks);
      
      var ConfirmLinks =
      {
          run: function()
          {
              $('a.confirm').bind('click', ConfirmLinks.click);
          },
          click: function(event)
          {
              if (!confirm(this.title)) {
                  return false;
              }
          }
      }
      StartUp(ConfirmLinks);
      

      我的网站是模块化的,所以每个模块都有 N 个动作,每个动作都可以有一个 .js 文件,所以我只写函数并用 StartUp(...functionName...) 调用它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        相关资源
        最近更新 更多