這裏有一個基本的對話框插件:
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索引,使對話框始終在最前面
- 追加對話框元素來
BODY
在我經驗,如果對話框HTML並不總是出現在頁面上,則性能會更好。這不利於優雅的降級,但DOM樹越輕,應用程序似乎越快。所以最好根據需要將對話元素添加到樹中。
編輯:請注意,我的對話框插件並不希望你在頁面上有一個預定義的HTML。它只是讓人想起一個div。所以,你不要選擇一個元素,並將其轉換爲對話框。相反,你重新創建一個。
你是指什麼意思最好的方式呢? – Sarfraz
應該有一種方法來編輯CSS並重新定位當前的對話框本身。 – Ananth
我會使用燈箱插件。 –