初歩的なダイアログ プラグインを次に示します。
http://jsfiddle.net/pjUUQ/
(function($) {
var dialogHTML = '<div class="dialog"></div>';
$.openDialog = function(opts) {
// Create the DIV for dialog without inserting into DO
var dialog = $(dialogHTML);
dialog.appendTo('body');
// Give dialog some basic CSS
dialog.css({
position: 'absolute', // positioned
'z-index': Math.pow(2,32) // make it sit on top
});
// Position the dialog on the screen
var horizOffset = ($(window).width() - opts.width || dialog.outerWidht()) / 2;
var vertOffset = ($(window).height() - opts.height || dialog.outerHeight()) / 2;
dialog.css({
left: horizOffset,
right: horizOffset,
top: vertOffset,
bottom: vertOffset
});
// Return dialog object to make it chainable
return dialog;
};
}(jQuery));
$.openDialog({width: 200, height: 100}).append('hello world');
キーイベントを処理して Esc で閉じる、ボタン付きのタイトルバーを追加するなど、多くのことを追加できます。しかし、とにかくこれらのことを行う方法をすでに知っているでしょう。
ダイアログを作成する際の注意事項:
- ダイアログが常に一番上に表示されるように、十分に高い z-index を設定します
- ダイアログ要素を追加します
BODY
私の経験では、ダイアログの HTML が常にページに存在しない場合、パフォーマンスはいくらか向上します。これはグレースフル デグラデーションに反しますが、DOM ツリーが軽いほど、アプリは高速に動作するように見えます。そのため、必要に応じてダイアログ要素をツリーに追加することをお勧めします。
編集:私のダイアログ プラグインは、ページに定義済みの HTML があることを想定していないことに注意してください。divを思い起こさせるだけです。したがって、要素を選択してダイアログに変換することはありません。代わりに、新たに作成します。