javascript - 为什么我不能在 jQuery(document).ready() 中调用我的 namespace ?

标签 javascript jquery namespaces

我正在为我的项目创建命名空间,并且我想调用 jQuery(document).ready() 中的函数。

使用the self encapsulated jQuery namespace structure我能够使这个例子发挥作用。 但是一旦我将 MYNAMESPACE.myFunction(); 移动到 jQuery(document).ready() 中,它就不再起作用了。

这可能是因为我不理解一些 jQuery 逻辑。有人能把我推向正确的方向吗? Here is my fiddle .

代码:

//HTML
<div class="test"> test </div> 

//JS
jQuery(document).ready(function($) {
    if($('.test').text().length > 0){            
        MYNAMESPACE.myFunction(); //function call
    }

});

;var MYNAMESPACE = {};
;(function($) {

    MYNAMESPACE = {
        myFunction: function()
        {
            $('.test').text('Text changed');
        }
    }

})(jQuery);
//  MYNAMESPACE.myFunction(); //<-- This works

最佳答案

fiddle 中的代码在 window.load 上执行。这意味着当您进行该调用并且 jQuery 同步执行回调时,文档已准备就绪。此时,您还没有定义 MYNAMESPACE

如果您指定不希望代码在 window.load: http://jsfiddle.net/baT47/ 上执行,它就会起作用。

或者,如果您首先定义 MYNAMESPACE: http://jsfiddle.net/c8L7c/

;var MYNAMESPACE = {};

;(function($) {

    MYNAMESPACE = {
        myFunction: function()
        {
            $('.test').text('Text changed');
        }
    }

})(jQuery);
//  MYNAMESPACE.myFunction(); //function call

jQuery(document).ready(function($) {
    if($('.test').text().length > 0){            
        MYNAMESPACE.myFunction(); //function call
    }

});

关于javascript - 为什么我不能在 jQuery(document).ready() 中调用我的 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067099/

相关文章:

javascript - 如何处理调用同一函数的多个 Ajax 调用?

php - 为什么在 Composer 中使用 psr-4 自动加载时指定命名空间?

c# - 在 C# 中使用命名空间会影响性能吗?

php - 如何在 Laravel 中使用子文件夹中的自定义类?

javascript - HTML 的一个字符串变量中的两个表

javascript - 为什么在 fullpage.js 中 setAllowScrolling=false 后我不在导航栏中使用 Scroll?

JavaScript 单元格填充

javascript - jsTree:从应用程序目录加载 jquery.jstree.js 文件的行为与从 URL 加载它的行为不同

jquery - 如何使用 JQuery 切换所有复选框

javascript - 如何从输入中获取值作为数字来计算gcd?