使用Backbone LayoutManager的冗余div

时间:2012-10-25 05:16:51

标签: javascript jquery html css backbone.js

我稍后修改了 list.html 示例https://github.com/tbranyen/backbone.layoutmanager/blob/master/examples/list.html

http://jsfiddle.net/qhoc/nQJz6/

如果您查看Firebug,可以看到divol之间还有li

我知道我可以通过将li移出模板并在tagName: 'li'视图中使用Items来摆脱它。但这意味着我必须在某些地方更改我的代码。另外,我更倾向于将li保留在设计流程一致性的模板中。

如何在不修改模板的情况下摆脱此div

1 个答案:

答案 0 :(得分:2)

覆盖partial功能并执行jQuery#find,如下所示:

Backbone.LayoutManager.configure({
    partial: function(root, name, el, append) {
        // If no selector is specified, assume the parent should be added to.
        var $root = name ? $(root).find(name) : $(root);

        // Use the append method if append argument is true.
        // Set the element to append to be the first child.
        this[append ? "append" : "html"]($root, $(el).children().first());
    }
});

此方法可以在全局(上层)或本地实例上覆盖。

您还需要调整afterRender以使用新元素:

Backbone.LayoutView.extend({
    afterRender: function() {
        this.setElement(this.el.firstChild);
        this.delegateEvents();
    }
});

此处提供更多信息:http://tbranyen.github.com/backbone.layoutmanager/#configuration/defaults