出于性能原因以及以后的使用,我试图在jQuery中存储选择器的对象。
在某些情况下,我可能需要访问我正在创建的同一对象文字中的键。
(function($) {
'use strict';
var appCache = {
$navSecondary: $('#nav-secondary'),
$navMore: appCache.$navSecondary.find('.more')
};
})(jQuery);
上面的代码产生错误:
TypeError: appCache is undefined
我该如何解决这个问题?我是否必须在jQuery中再次执行选择?
感谢。
答案 0 :(得分:4)
首先评估赋值运算符的右侧。然后将结果传递给左边并分配给变量。
在构造对象时,变量为undefined
,因此您无法使用其值(尽管已声明,但var
语句已被提升)。
您可以在创建对象后指定新属性。
var appCache = {
$navSecondary: $('#nav-secondary')
};
appCache["$navMore"] = appCache.$navSecondary.find('.more');
答案 1 :(得分:1)
var appCache = {
$navSecondary: $('#nav-secondary'),
$navMore: appCache.$navSecondary.find('.more')
^^^^^^^^
};
因为您在初始化期间尝试访问变量。
答案 2 :(得分:1)
您可以改为使用函数:
$navMore: function(){return this.$navSecondary.find('.more')}
然后在对象初始化后调用它:
appCache.$navMore(); // this will return set of jQuery matched elements