1

我正在尝试使用主干、把手、下划线和 jQuery 来计算表是否更宽,然后是容器 div。问题是来自 jQuery 的 .width() 函数返回一个百分比而不是像素。

我已经阅读了一些关于此的帖子,例如jQuery width() 没有在生成内容的 div 上返回正确的值,其中声明未附加到 html 文档但仍将获得 css 宽度的元素。这是有道理的,该表是从数据库中检索的,并且它具有百分比的 CSS 宽度,这是我无法控制的。

...
var MyView = Backbone.View.extend({
                template: Handlebars.compile(myTemplate),
                tagName: 'div',
                id: 'my-doc-container',
                headerTag: 'h2',
                options: null,
                initialize: function(options) {
                    this.options = options;
                },
                setModel: function(parentModelOptions) {
                    this.model = new MyDocModel(parentModelOptions);
                    ...
                    this.render();
                },
                render: function() {
                    this.$el.html(this.template(this.model.toJSON()));
                    this._adaptContent();

                    return this;
                },
                _adaptContent: function() {
                    var tables = $(this.$el).find('table');
                    ...
                    _.each(tables, function(table) {
                        $(table).wrap('<div class="tablewrapper"/>');

                        alert($table).width());
                    }, this);
                }
                ...
              }
           })

所以我的问题是,是否有人对我如何能够从这些框架中计算表格的宽度有任何建议?

4

1 回答 1

0

是的,你无法获得元素宽度(在显示上相同:无属性,还有更多情况......),但你可以传递已经在 dom 中的元素。

var MyView = Backbone.View.extend({
  template: Handlebars.compile(myTemplate),
  el: "selector of element what is available in dom already like div#myTable",

  render: function() {
    this.$el.html(this.template(.....));
    this.$el.width() // => return right result

    return this;
  }  
});
于 2013-08-21T09:26:15.850 回答