JQuery 对象似乎没有在模块中赋值
JQuery object seems to not be assigned a value in module
var Foo = Foo || {};
Foo.Controller = (function ($) {
var $page = $("#bar");
var init = function () {
console.log($page); // outputs: []
console.log($.isEmptyObject($page)); // outputs: false
}
var public = {
init: init
}
return public;
})(jQuery);
$("#FooPage").bind("pageinit", function () {
Foo.Controller.init();
});
为什么$page似乎没有被赋予它的价值?我正在使用JQuery Mobile,pageinit相当于文档就绪的移动版。
$page
没有在pageinit
上分配,它会立即分配。试试这个:
var init = function () {
console.log($page); // outputs: []
console.log($('#bar'); // TELL US IF THIS LOGS THE RIGHT THING!
console.log($.isEmptyObject($page)); // outputs: false
};
编辑(Esailija指出了另一个问题):
Esailija的眼睛比我好得多。 Foo.Controller
设置为IIFE的结果。由于该函数不返回任何内容,因此将其设置为 undefined
。也许您想返回一个具有init
函数的对象?在这种情况下,您可以通过在init
内设置$page
来避免整个问题。
var Foo = Foo || {};
Foo.Controller = (function($) {
var init = function () {
var $page = $("#bar");
console.log($page); // outputs: [] <-- not anymore (if #bar is really on the page)
console.log($.isEmptyObject($page)); // outputs: false
};
return {init:init};
})(jQuery);
$("#FooPage").bind("pageinit", function () {
Foo.Controller.init();
});
即使您
推迟对.init
的调用,立即调用的函数表达式(应该是)创建init
函数在加载页面之前定义var $page = $("#bar");
。
相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- JavaScript:在嵌套循环中为数组赋值
- 未设置变量的赋值| jQuery的作用是什么
- Javascript赋值运算符的奇怪行为
- onchange赋值的Javascript位置
- 我可以在javascript中的回调函数中为变量赋值吗
- 逻辑(JSint友好)等效于while循环中的此赋值
- 为数组元素的属性赋值将设置所有其他类似元素的属性
- JQuery 对象似乎没有在模块中赋值
- JS模块模式:为什么在扩展中赋值