代码之家  ›  专栏  ›  技术社区  ›  Ralph Caraveo

在jquery就绪函数中声明函数的最佳实践

  •  30
  • Ralph Caraveo  · 技术社区  · 17 年前


    jquery.ready(function(){});
    

    我想声明它们,以便它们在ready闭包的相同范围内。我不想把全局js名称空间弄得乱七八糟,所以我不想在ready闭包之外声明它们,因为它们只针对其中的代码。

    那么,如何声明这样一个函数呢?我不是指一个自定义的jquery扩展方法/函数……只是一个普通的“ol”函数,它做一些琐碎的事情,比如:

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

    我想遵循jquery建议和函数声明语法。我可以通过声明一个类似于上面乘法的函数来实现它…但是由于某些原因,它看起来不正确,所以我想我需要一些指导。

    3 回复  |  直到 10 年前
        1
  •  55
  •   jonstjohn    15 年前

    我相信只要在ready()闭包中声明函数就可以了,但这里可以更明确地说明局部作用域:

    jQuery.ready(function() {
    
         var myFunc = function() {
    
               // do some stuff here
    
         };
    
         myFunc();
    
    
    });
    
        2
  •  9
  •   matt b    17 年前

    听起来可能很简单,但你只是。。。声明函数。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
  •  7
  •   Glavić    17 年前

    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文件,所以我只需编写函数并在启动时调用它(…函数名…)