1

谁能告诉我我做错了什么?

http://jsfiddle.net/zsVpt/

var loadingDOM = $('.loading');

//when i want to use the stored DOM, it simply doesn't work and don't give any errors at all !!!
Template.search.events({
    'keyup .searchField' : function(event, template){
        loadingDOM.css('display','inline');
        //etc.
     }
});


//this one works
Template.search.events({
    'keyup .searchField' : function(event, template){
        $('.loading').css('display','inline');
        //etc.
     }
});

很简单,获取 dom 并将其存储在变量(性能)中,然后在流星事件范围内使用它。

当我使用存储的 DOM 时,它根本无法正常工作而不会出现任何错误!虽然直接使用 JQuery 获取 DOM 确实有效。

http://www.youtube.com/watch?v=JP9zwE02tk4

4

1 回答 1

4

尝试loadingDOM在呈现的回调中缓存,如下所示:

Template.search.rendered = function() {
    this.loading = this.find('.loading'); 
}

Template.search.events({
  'keyup input' : function(e, t){
     $(t.loading).css('display', 'inline'); 
   }
});

我的猜测是您正在尝试在模板呈现之前缓存加载的 dom 元素。通过在模板渲染后将其缓存到模板对象中,只要您在同一个模板中工作,您就可以访问它。

于 2012-11-30T06:48:52.423 回答