jQuery UI(バージョン1.8.24)に基づくウィジェットがあります。このウィジェットは、resizable
表示されるとすぐにアイテムで埋められ、ユーザーのアクションに基づいてクリアして再度埋めることができます。おおまかに次のようになります。
<div class="dialog ui-resizable">
<div class="dialog-header">…</div>
<div class="dialog-contents">…</div>
<div class="dialog-controls">…</div>
<div class="ui-resizable-handle ui-resizable-e" style="z-index: 1000"></div>
…
</div>
次のコードを使用して、サイズ変更可能にキャストされます。
myDialog.resizable(
{ alsoResize: myDialog.find(".dialog-contents"),
minHeight: minH,
minWidth: minW,
maxHeight: maxH,
maxWidth: maxW
}).show().focus();
updateMyDialogContents();
ウィジェットのサイズがまだ手動で変更されていない場合は、の内容とともに拡大および縮小しdiv.dialog-contents
ます。これは望ましくありません。ただし、サイズ変更ハンドルのいずれかをドラッグすると、希望どおりに動作し始めます。つまり、内部で何が起こってもサイズが一定に保たれdiv.dialog-contents
ます。
最初からサイズを一定に保つにはどうすればよいですか?
セット_mouseDrag
のメソッドと、DOM要素の属性の実際の値に気づきました。通常、ウィジェットをレンダリングした直後に自分で属性を設定しますが、にいくつかの内部要素があるため、これは機能しません。resizable
width
height
style
style
alsoResize
座標デルタがゼロのプログラムで呼び出し_mouseDrag
て、ウィジェットが実際の"mousedrag"
イベントがトリガーされたと見なす方法はありますか?これが可能であれば、ウィジェットが初期化された直後にマウスのドラッグをシミュレートすることで、この問題を解決します。
私は次のようなことを試しました
dlg.data("resizable").
_mouseDrag(new $.Event("mousedrag",
{ dragState: "end",
dragDeltaT: 0,
dragDelta: 0,
dragDeltaX: 0,
dragDeltaY: 0 }));
さまざまなイベントがあり、明らかな成功はありません(一部の属性が常に欠落しているように見えるため、エラーがスローされます)。
編集1:jQueryバージョン。