2011-09-15 60 views
1

在下面的代碼片段中,是否需要在另一個對象中緩存$(「#loading」)(讓我們稱它爲JqueryDOMCache)還是Backbone爲我做了這個?我想讓應用程序的性能達到300個奇怪的DOM交互。如何使用backbone.js緩存DOM元素?

 var BeforeApploadView = Backbone.View.extend({ 
       el : "#loading", 
       render : function(){ 
        $(this.el).show(); 
       }, 
       hide : function(){ 
        $(this.el).hide(); 
       } 
      }); 

     var App = (function($){ 
      var app = {}; 
      app.start = function(s){ 
       var beforeLoadView =new BeforeApploadView(); 
       beforeLoadView.render(); 
      }; 
      return app; 
     }); 

回答

0

不,你不需要做任何特別的事情。有兩個原因:

  • 只要你還有關於您BeforeApploadView,那麼它必須el參考,使其保持活着。
  • jQuery hide函數不會從DOM中刪除elmenet。它僅對元素應用style="display: none"。 DOM也保持對元素的引用。

你應該全部設置。

+0

感謝Brian,所以每個.render()調用不會創建一個新的jquery對象?在這種情況下,如果我在渲染函數中有多個jquery調用,那麼每個對象都保持緩存或只是頂級對象? – papdel

+0

它不創建新的對象。渲染功能中沒有魔法。你寫的是你得到的。因此,jQuery'show'只是簡單的將'display:none'風格從已經在DOM中的'el'移開。沒有新的元素創建:) –

+0

感謝Brian,通過源代碼backbone.js發現了很多 - 像這樣... //元素查找,作用域爲當前視圖中的DOM元素。 //如果你正在處理 //這是一個特定的視圖,那麼這應該是全球查找的首選。 var selectorDelegate = function(selector){ return $(selector,this.el); }; – papdel