我该如何编写函数?

时间:2012-02-05 06:06:22

标签: jquery

我想在对话框函数中添加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');

2 个答案:

答案 0 :(得分: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 :(得分: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"); } }
    });
};