我正在为我的项目创建命名空间,并且我想调用 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/