在函数内部使用jQuery的正确方法?

时间:2012-02-15 00:58:12

标签: javascript jquery

我知道这个问题非常主观,但我确定我没有遵循这个标准 - 因为虽然风格和方法可能与开发不同,但仍有一些非常可靠的标准。

无论如何,在使用jQuery库的javascript中定义函数时,我通常会执行以下操作;

function funcName() {
    $(document).ready(function() {
         // Do stuff
    });
}

为了在函数内部使用jQuery而尝试这样做对我来说没有用,所以为什么我使用上面的东西;

$(document).ready(function() {
     function funcName() {
         // Do stuff
     }
});

对于在函数中使用jQuery的标准兼容/常用方式的任何评论/答案将非常感谢!

编辑:非常愚蠢的程度让我提出这个问题。自从我开始使用jQuery之前(在我真正了解开发之前),我总是将代码包含在$(document).ready(function{})中,而不是考虑它的实际目的。

如果您想投票支持关闭,请执行此操作。

3 个答案:

答案 0 :(得分:1)

问题在于你打电话

$(document).ready(function(){
 myFunc();
});
一旦文件就绪事件被触发(当页面准备好时),将调用myFunc。

但是如果你把那个块放到一个函数中,只要你调用包装函数就会调用它,并且可能为时太晚而无法监听document.ready事件。

即。

function doSomething()
{
    $(document).ready(function(){
        myFunc();
    });
}

当你调用doSomething()时,它会将myFunc()绑定到页面就绪事件。但是如果你在page.ready事件被触发(你的页面已经加载)之后调用它,就像你在用户点击某些内容时调用它一样,那么myFunc()将永远不会发生。

第一个实现通常是最好的,通常你不想立即将你的函数绑定到事件,然后回应它们。

答案 1 :(得分:1)

如果由于某种原因需要在DOM加载上定义函数,则可以将函数分配给范围内变量(在本例中为window.myFunc)。

$(document).ready(function() {
    window.myFunc = function(){
        alert('myFunc');
    }
});

由于每个浏览器窗口只有一个窗口实例,因此您可以从任何地方访问它。注意不要覆盖任何窗口的固有方法。

window.myFunc();

关于功能范围herehere,还有一些很好的信息。

答案 2 :(得分:0)

(function($){/ do smth /})(jQuery);