バックボーン、ハンドルバー、アンダースコア、jQuery を使用して、テーブルの幅がコンテナーの div よりも広いかどうかを計算しようとしています。問題は、jQuery の .width() 関数がピクセルではなくパーセンテージを返すことです。
これに関するいくつかの投稿を読んだことがあります。たとえば、jQuery width() が生成されたコンテンツを含む div で正しい値を返さない場合、html ドキュメントにまだ添付されていない要素が css 幅を取得すると述べられています。これは理にかなっています。テーブルはデータベースから取得され、パーセンテージで css-width があり、私は制御できません。
...
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);
}
...
}
})
私の質問は、これらのフレームワーク内からテーブルの幅を計算する方法について何か提案があるかどうかです。