如何在jquery中正确缓存DOM元素?

时间:2011-03-03 10:37:26

标签: jquery list dom

我在从命名空间变量访问缓存的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元素。

2 个答案:

答案 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>