我在从命名空间变量访问缓存的DOM元素时遇到了一些麻烦。我的FeedManager配置变量是这样的:
var FeedManager = {
config : {
$feedContainer : $('#feedContainer'),
feedUrl : 'http://rss......',
feedLimit : 10
},....
$ feedContainer是html中的ul元素。我想添加从feed构建的li元素。我在FeedManager对象中有一个函数init()。但不知怎的,它无法添加子元素。
init: function(){
var feed = new google.feeds.Feed(FeedManager.config.feedUrl);
......
......
// this is not working
FeedManager.config.$feedContainer.append(li);
但如果在init()函数内部,我再次获取feedContainer元素,它可以工作!
var feedContainer = $('#feedContainer');
feedContainer.append(li);
可能是什么问题?以及如何在配置对象中初始化缓存的dom元素。
答案 0 :(得分:1)
您的#feedContainer元素是否存在于HTML中,或者稍后会被提取?如果它是在你不能缓存元素之后获取的,那么你必须只使用一个选择器字符串 feedContainer:'#feedContainer'`
在FeedManager对象中然后使用类似
的内容$(FeedManager.config.feedContainer).append(li);
如果它存在于HTML中,请确保在DOM准备好后定义FeedManager对象,即。
内$(document).ready(function () {
// ...
});
或$(function () { ... });
答案 1 :(得分:1)
您需要确保$('#feedContainer')
已加载。
一个类似的例子:
<script type="text/javascript">
$(function() {
var Manager = {
config: {
$p: $("p#hello")
},
init: function() {
var label = Manager.config.$p.html();
console.log(label);
}
};
Manager.init();
});
</script>