2012-02-05 66 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