[解決済み] jQuery DataTables: テーブル幅の制御
質問
jQuery DataTables プラグインを使用して、テーブルの幅を制御するのに問題があります。 テーブルはコンテナの幅の100%になるはずですが、コンテナの幅よりもむしろ小さい、任意の幅になってしまいます。
提案に感謝します。
テーブルの宣言は次のようになります。
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%">
そして、javascript
jQuery('#tab-datasets').load('/cgi-bin/qryDatasets', '', function (){
jQuery('#querytableDatasets').dataTable({
"bPaginate": false,
"bInfo": false,
"bFilter": false
});
}); `
Firebug で HTML を検査すると、次のようになります (追加された style="width: 0px;" に注意してください)。
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%" style="width: 0px;">
Firebugでスタイルを見てみると、table.displayのスタイルがオーバーライドされています。 これはどこから来ているのかわかりません
element.style {
width:0;}
-- dataTables.css (line 84
table.display {
margin:0 auto;
width:100%;
}
どのように解決するのですか?
この問題は、dataTable がその幅を計算する必要があるために発生します。しかし、タブ内で使用される場合、それは表示されないので、幅を計算することができません。解決策は、タブが表示されているときに 'fnAdjustColumnSizing' を呼び出すことです。
前文
<ブロッククオートこの例では、スクロール機能付きデータテーブルを jQuery UI タブ (または、テーブルが初期化されたときに非表示 (display:none) になるその他の方法) と共に使用する方法を示しています。 テーブルが初期化されたときに隠された (display:none) 要素の中にある他の方法) と一緒に使用できることを示しています。その理由は これは、DataTablesが初期化されたときに、それがhidden要素にある場合、特別な配慮が必要だからです。 が初期化され、hidden要素にある場合、ブラウザはDataTablesに与える測定値を持たないからです。 ブラウザはDataTablesに与える計測値を持たないため、DataTablesが初期化される際に、列の位置がずれてしまうからです。 スクロールが有効な場合、列の位置がずれるからです。
これを回避する方法は、fnAdjustColumnSizing API 関数を呼び出すことです。この関数は、現在のデータに基づいて必要な列の幅を計算します。 この関数は、現在のデータに基づいて必要な列幅を計算し、その後、テーブルを再描画します。 これは、テーブルが初めて表示されるときに必要とされるものです。 この機能は、テーブルが初めて表示されるときに必要なものです。このために、jQuery UI のテーブルが提供する 'show' メソッドを使用しています。 データテーブルが作成されているかどうかを確認します('div.data'の特別なセレクタに注意してください)。 div.dataTables_scrollBody'の追加セレクタに注目してください。 テーブルが初期化されたときに追加されます)。テーブルが初期化された場合は サイズを変更します。最適化として、テーブルの最初の表示だけサイズを変更することができます。 最適化すれば、テーブルの最初の表示だけサイズを変更することができます。
初期化コード
$(document).ready(function() {
$("#tabs").tabs( {
"show": function(event, ui) {
var oTable = $('div.dataTables_scrollBody>table.display', ui.panel).dataTable();
if ( oTable.length > 0 ) {
oTable.fnAdjustColumnSizing();
}
}
} );
$('table.display').dataTable( {
"sScrollY": "200px",
"bScrollCollapse": true,
"bPaginate": false,
"bJQueryUI": true,
"aoColumnDefs": [
{ "sWidth": "10%", "aTargets": [ -1 ] }
]
} );
} );
参照 この をご覧ください。
関連
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] jQueryを使用してCSSのdisplay noneまたはblockプロパティを変更するにはどうすればよいですか?
-
[解決済み] jquery input select all on focus
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 選択オプション「selected」を値で設定する
-
[解決済み] チェックボックスのチェック/アンチェックは、jqueryを使用していますか?重複
-
[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
-
[解決済み] Bootstrapのモーダルを閉じる
-
[解決済み] jQueryで5秒待つには?
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] val()を使ってselectの値を設定しても、jqueryのchangeイベントが発生しないのはなぜですか?
-
[解決済み] セレクトボックスの選択項目を設定する
-
[解決済み] jQueryを使用して要素の型を検索する
-
[解決済み】iPad版SafariでjQueryを使ってタッチイベントを認識させる方法は?可能でしょうか?