2012-02-05 87 views
0

我想將2個參數添加到對話框函數。第一個參數應該是框標題,第二個參數應該是框內容。我想調用這個函數,並設置框的標題和正文內容。如何編寫函數?

這裏是想我的功能包括:

var $dialog = $('<div></div>') 
.html('This dialog will show every time!') 
.dialog({ 
    height : 140, 
    modal : true, 
    autoOpen : false, 
    title : 'Basic Dialog' 
}); 

目前這打開的對話框中。

$dialog.dialog('open'); 

回答

3

這是你的功能:

function createDialog(title, content) 
{ 
    return $('<div></div>') 
     .html(content || 'Defualt content.') 
     .dialog({ 
      height : 140, 
      modal : true, 
      autoOpen : false, 
      title : title || 'Defualt title' 
     }); 
} 

然後,您可以調用該函數是這樣的:

$dialog = createDialog('Basic Dialog', 'This dialog will show every time!'); 

,然後用$dialog.dialog('open')打開它,你有,或者你可以立即打開:

createDialog('Basic Dialog', 'This dialog will show every time!').dialog('open'); 

正如@LordZardeck指出的那樣,上述解決方案將導致太多的零散DOM節點。你最好重複使用同一個對話框(假設你一次只需要一個對話框是否安全?我當然希望如此!)。

如果你想保持你的DOM有點理智的,試試這個:

var createDialog = (function($) 
{ 
    var $dialog = $('<div></div>').dialog({ 
      height : 140, 
      modal : true, 
      autoOpen : false 
     }), 
     $content = $dialog.find('.dialog-content'); 

    return function (title, content) 
    { 
     $content.html(content || 'Default content.'); 

     return $dialog.dialog('option', { 
        title : title || 'Defualt title' 
       }); 
    } 
}) 
(jQuery); 

用法是一樣的與上面的一個。

+1

謝謝!在(當前)6分鐘等待之後接受這個。 – Muzz 2012-02-05 06:15:26

+0

我必須說,這是一個非常巧妙的解決方案!道具!如果你不介意,我會修改我的代碼來使用它! – LordZardeck 2012-02-05 18:35:03

3

我有一個自定義提醒,我認爲它的效果很好。這樣做的一個原因是它在關閉時從對象身上刪除了對話框,確保你不會用一堆不會再次使用的對話框填滿你的dom:

function showMessage(m, t) 
{ 
    t = (t)? t : 'Application Message'; 
    return $('<div>').css({'text-align': 'left', 'padding-top': '10px'}).html(m).dialog({ 
      modal: true, 
      width: '400px', 
      height: 140, 
      title: t, 
      autoOpen: false, 
      close: function(){$(this).dialog('destroy');}, 
      buttons: { Ok: function() { $(this).dialog("close"); } } 
    }); 
}; 
+0

謝謝LordZardeck。本着公平的精神。無論如何,約瑟夫西爾伯先生都回答了,但我想感謝你。我已經投票了你的答案,因爲我使用了你的銷燬功能。 :) – Muzz 2012-02-05 06:27:34

+1

+1用於考慮可能創建的衆多DOM元素。但是,爲什麼你會一遍又一遍地創建和銷燬對話框?爲什麼不簡單地重用相同的對話框? – 2012-02-05 06:31:00

+0

是真的。雖然它可能不會影響性能,但我們應該始終致力於改進我們的代碼。這裏有問題,但我們如何定義一個全局變量來分配它,並保證它不會干擾其他代碼? – LordZardeck 2012-02-05 10:22:02