Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主干视图和jquery宽度返回百分比_Jquery_Backbone.js_Handlebars.js_Backbone Views - Fatal编程技术网

主干视图和jquery宽度返回百分比

主干视图和jquery宽度返回百分比,jquery,backbone.js,handlebars.js,backbone-views,Jquery,Backbone.js,Handlebars.js,Backbone Views,我试图使用主干、手柄、下划线和jQuery计算表是否比容器div更宽。问题是jQuery中的.width函数返回的是百分比,而不是像素 我读过一些关于这方面的文章,例如,其中指出,尚未附加到html文档的元素将获得css宽度。这是有道理的,表是从数据库中检索的,它有一个css宽度(以百分比表示),这是我无法控制的 ... var MyView = Backbone.View.extend({ template: Handlebars.compile(myTempl

我试图使用主干、手柄、下划线和jQuery计算表是否比容器div更宽。问题是jQuery中的.width函数返回的是百分比,而不是像素

我读过一些关于这方面的文章,例如,其中指出,尚未附加到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);
                }
                ...
              }
           })

因此,我的问题是,如果有人对如何在这些框架内计算表的宽度有任何建议?

是的,在diplay上,u无法获得相同的元素宽度:无属性,以及更多情况。。。, 但您可以传递已经在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;
  }  
});

这不是我在做var表=$this.$el.find'table'时所做的吗;?这应该将呈现的html文档中的表放入变量中,对吗?不,$This.$el与此相同。$el并获取包含html的新元素,该元素不会呈现到dom。。。在此之后。$el.appendTo。。。。会起作用的。所以你需要先渲染el,在请求宽度后…我甚至创建了一个新方法,在调用render后直接调用,这样它绝对是在渲染完成后创建的。。。它仍然只是返回百分比。很抱歉,回复太晚了,谢谢您的帮助,但我的问题似乎与此视图是子类视图以及在这种情况下主干的渲染过程有关。这使得在JSFIDLE上发布有点困难,因为我的特定问题位于主干的多个部分/文件中。。。如果时间允许,我会看看是否可以稍后澄清这个问题。PS:$this.$el.find'table'是一种过于复杂的表达方式。$'table':在$table.width中有一个额外的警报。