将自定义方法添加到jquery ui对话框

时间:2012-10-01 18:53:38

标签: jquery jquery-ui jquery-ui-dialog

我该怎么做:

$("#some_div").dialog("doSomething");

该方法应该做的是在标题栏中添加一个额外的图标

编辑1 :我试过这个solution:方法被调用但是我无法访问对话框对象(也许我做错了)

2 个答案:

答案 0 :(得分:2)

首先,如果您要在标题栏中添加一个图标,我建议您在该对话框中应用一个类并使用CSS设置样式。例如:

$( "#some_div" ).dialog({ dialogClass: "someClass" });

如果您仍想添加自定义方法,documentation说的是:

提供一个回调函数来将create事件作为init选项处理。

$( ".selector" ).dialog({
   create: function(event, ui) { ... }
});

按类型绑定到create事件:dialogcreate。

$( ".selector" ).bind( "dialogcreate", function(event, ui) { 
    ... 
});

答案 1 :(得分:2)

好的,这就是我所做的:

//in a separate js file
$.ui.dialog.prototype.showExtraButton = function()
{
    this.uiDialogTitlebar.append("<a role='button' class='ui-dialog-titlebar-icon ui-dialog-titlebar-icon-extra'><span class='ui-icon'></span></a>");
}

//call it this way
$("#some_div").dialog("showExtraButton");

//css
.ui-dialog-titlebar-icon {
  position: absolute;
  right: 25px;
}

.ui-dialog-titlebar-icon-extra span
{
    display: block;
    background-image: url(../path_to_img/button_extra.png)!important;
}

兰登的solution以及Kevin B的this one给了我如何解决问题的答案

更新2014-01-03

关于$.widget()的TIL,所以这是同一件事的另一个实现

$.widget("ui.dialog", $.ui.dialog,
{
    showExtraButton: function()
    {
        this.uiDialogTitlebar.append("<a role='button' class='ui-dialog-titlebar-icon ui-dialog-titlebar-icon-extra'><span class='ui-icon'></span></a>");
    }
});