【发布时间】:2010-09-07 08:20:47
【问题描述】:
我在此处更新了脚本以提供更好的示例。对于 $header,我现在有一个匿名函数返回 $("#header")。虽然这可行,但我确信它没有效率,因为它每次使用它都会调用 $header - 所以它与在整个代码中使用 $("#header") 相同。
我真正想要的是将 $("header") 存储在一个变量中。当我尝试使用 $header2 (如下)执行此操作时,它失败了。 #header 是红色而不是蓝色。
当我使用 firebug 输出 lib.page.$header2.selector 时正确显示 #header。如您所见,调用 lib.page.init 的脚本位于 DOM 的底部。
有什么想法吗?
<script type="text/javascript">
var lib = {
page : {
$header : function() { return $("#header")},
$header2 : $("#header"),
init: function() {
lib.page.$header().css("background","red");
lib.page.$header2.css("background","blue");
console.log(lib.page.$header2.selector);
}
}
}
</script>
</head>
<body>
<div id="wrapper">
<div id="header">
<em>Example!</em>
</div>
</div>
<script type="text/javascript">
$(function() { lib.page.init(); });
</script>
</body>
【问题讨论】:
标签: javascript jquery object-literal