如何设置没事就EL或标记名与jQuery UI的手风琴工作(How to set nothing o

2019-09-17 14:31发布

jQueryUI的手风琴的结构是这样的,

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

每个项目。 我所要做的是创建手风琴通过循环我骨干视图的内部,但是骨干网为每个项目div标签,所以我有这样的HTML代码

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

这使得jQuery的手风琴控制工作不正常,折叠和展开不工作。 我认为这是可以,如果我能在EL或标记名设置没有得到解决,但我无法找到答案。 有没有什么办法可以解决这个问题呢?

Answer 1:

我想你会马上去手风琴一种观点认为更好的,然后让每个小组中的一个单独视图。 毕竟, <h2> s为手风琴作为一种整体,而不是针对特定面板控制。

你有一些每个小组的观点是这样的:

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/



文章来源: How to set nothing on el or tagname to work with jquery ui accordion