私はbackbone.jsを使っていて、<ul>
要素の場合はlistView
、動的な場合は要素の場合は<li>
要素です。 listView
のレンダリングメソッドでは、新しいtabView
を作成し、el
をlistView
el
に追加しています。既存の「追加」タブの前に動的ブートストラップタブを追加する
var listView = Backbone.View.extend({
//<ul> element for tabs
el: '.nav-tabs',
render: function(model) {
var tabView = new TabView({ model: model });
tabView.render();
$(this.el).append(tabView.el);
}
var TabView = Backbone.View.extend({
//create <li> element to hold each tab
tagName: "li",
className: "currentTab ",
render() {
var html = this.template(this.model.attributes);
$(this.el).append(html);
//creates new div for tab content
var tabContent = new TabContentView({ model: this.model });
tabContent.render();
}
これは素晴らしいですし、期待通りに動作します。
動的に新しいタブを追加するには、最初にli
という項目が1つあります。したがって、ユーザーがそのli
項目をクリックすると、新しいタブの作成のみが行われます。
私が必要とするのは、li
+要素の前に新しく作成するタブを追加することです。現在、新しいタブはすべて、this
+要素の後にのみ追加されています。
参考のために<ul>
タグのhtmlがあります。
<div id="test">
<ul class="nav nav-tabs ">
<li><a href="#" class="add-newTab">+</a></li>
</ul>
</div>
私はlistView
は以下のような方法をレンダリング変えてみましたが、それは動作しません。むしろ(+)li
要素の上に新しいタブを追加するだけです。
tabView.render();
$(this.el).find(".add-newTab").before(tabView.el);
これを行うことができますどのように任意のアイデア?