[解決済み] jQuery UIダイアログをajaxで読み込んだコンテンツの幅に合わせて自動的にリサイズする。
質問
私はこれに関する具体的な情報と例を見つけるのに非常に困っています。 私は、私のアプリケーションで多くのjQuery UIダイアログを持っていて、.ajax()呼び出しでロードされるdivに接続されています。 それらはすべて同じセットアップ呼び出しを使用しています。
$(".mydialog").dialog({
autoOpen: false,
resizable: false,
modal: true
});
ロードされるコンテンツの幅に合わせてダイアログのサイズを変更したいだけです。 今現在、幅は300px(デフォルト)のままで、水平スクロールバーが表示されます。
私が知る限り、"autoResize" はもはやダイアログのオプションではなく、私がそれを指定しても何も起こりません。
ダイアログごとに別の関数を書かないようにしているので
.dialog("option", "width", "500")
は、各ダイアログの幅が異なるため、実際にはオプションではありません。
指定する
width: 'auto'
を指定すると、ダイアログがブラウザウィンドウの幅の100%を占めるようになります。
私のオプションは何ですか? 私は jQuery 1.4.1 と jQuery UI 1.8rc1 を使用しています。これは本当に簡単なことであるべきだと思われます。
EDIT: 私はこれのための不器用な回避策を実装しましたが、私はまだ良い解決策を探しています。
どのように解決するのですか?
JQuery 1.4.1 と UI 1.8rc1 を使って、小さなサンプルアプリを書いたところです。 私がしたことは、コンストラクタを次のように指定したことだけです。
var theDialog = $(".mydialog").dialog({
autoOpen: false,
resizable: false,
modal: true,
width:'auto'
});
ブラウザウィンドウの幅を100%占有するとのことですが、FF3.6、Chrome、IE8でテストしたところ、問題なく動作しました。
私は AJAX 呼び出しを行わず、ダイアログの HTML を手動で変更するだけですが、それが問題を引き起こすとは思えません。 他の CSS 設定でこれをノックアウトすることができますか?
これの唯一の問題は、幅が中央から外れてしまうことですが、私はこれを見つけました。
サポートチケット
を配置するという回避策を提供しています。
dialog('open')
ステートメントを setTimeout 内に配置することで問題を解決しています。
私のheadタグの中身はこんな感じです。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery-ui.min.js"></script>
<link href="jquery-ui.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(function(){
var theDialog = $(".mydialog").dialog({
autoOpen: false,
resizable: false,
modal: true,
width: 'auto'
});
$('#one').click(function(){
theDialog.html('some random text').dialog('open');
});
$('#two').click(function(){
theDialog.html('<ul><li>Apple</li><li>Orange</li><li>Banana</li><li>Strawberry</li><li>long text string to see if width changes</li></ul>').dialog('open');
});
$('#three').click(function(){
//this is only call where off-centre is noticeable so use setTimeout
theDialog.html('<img src="./random.gif" width="500px" height="500px" />');
setTimeout(function(){ theDialog.dialog('open') }, 100);;
});
});
</script>
Jquery UI用のjsとcssは、以下のサイトからダウンロードしました。 http://jquery-ui.googlecode.com/files/jquery-ui-1.8rc1.zip . と本文に記載。
<div class='mydialog'></div>
<a href='#' id='one'>test1</a>
<a href='#' id='two'>test2</a>
<a href='#' id='three'>test3</a>
関連
-
Vueの「データを聴く」原則を解説
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] jQuery AJAX送信フォーム
-
[解決済み] jQuery Ajax ファイルアップロード
-
[解決済み] jQuery UIダイアログのクローズボタンを削除するには?
-
[解決済み] jQuery の Ajax リクエストがすべて終了するまで待ちますか?
-
[解決済み】PHPによるjQuery Ajax POSTの例
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vueの要素ツリーコントロールに破線を追加する説明
-
JSアレイループと効率解析の比較
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
jq は html ページとデータを動的に分割する。