2012-05-30 32 views
4

結構是這樣的,如何沒有設置EL或標記名與jQuery UI的手風琴工作jQueryUI的手風琴的

<h2>title</h2><div>content</div> 

每個項目。我所要做的是創建手風琴通過循環我的骨幹視圖的內部,但是骨幹網爲每個項目div標籤,所以我有這樣的

<div><h2>title</h2><div>content</div></div> 

這使得jQuery的手風琴控制工作不正常的html代碼,崩潰並展開不起作用。 我認爲這可以解決,如果我可以不設置任何關於el或標記名,但我找不到。 有什麼辦法可以解決這個問題嗎?

+0

您可以使用$(「選擇」),而不是指定一個標籤名選擇元素。 – McGarnagle

回答

2

我覺得你最好把手風琴留在一個視圖上,然後在每個面板裏面都有獨立的視圖。畢竟,<h2>是整個手風琴的控制器,而不是特定的面板。

你最好有一些每個小組的觀點是這樣的:

var P = Backbone.View.extend({ 
    render: function() { 
     // Add the panel's content to this.$el (which is a <div> by default). 
     return this; 
    } 
}); 

然後手風琴看法是這樣的:

var A = Backbone.View.extend({ 
    render: function() { 
     var panels = [ ... ]; 
     for(var p, i = 0; i < panels.length; ++i) { 
      p = new P({ ... }); 
      this.$el.append('<h3><a>' + panels[i] + '</a></h3>'); 
      this.$el.append(p.render().el); 
     } 

     // The accordion wants to know the sizes of things so 
     // we let the DOM sort itself out before binding the 
     // accordion. 
     var _this = this; 
     setTimeout(function() { _this.$el.accordion() }, 0); 

     return this; 
    } 
}); 

那麼你可以簡單$('#something').append((new A).render().el),它均能同時進行工作留下應有的一切。

你也可以添加一個title方法將P意見,然後A可以要求面板就是它的名字/標題/頭應該是讓所有的每個面板的信息很好地包含在每個面板視圖。

演示:http://jsfiddle.net/ambiguous/Y49W8/

+0

謝謝,那就是我一直在尋找的 – Ray