2012-10-01 152 views
4

我怎么可以这样做:添加自定义方法jQuery用户界面对话框

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

而且什么方法应该做的是在标题栏添加一个额外的图标

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

+0

@Ohgodwhy:我已经更新了我的问题,以显示我到目前为止已经 –

回答

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由兰登,随着this one由凯文·乙给了我如何解决我的问题的答案

UPDATE 2014 -01-03

TIL约$.widget(),所以这里是另一个执行sa我的事情

$.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>"); 
    } 
}); 
+0

侧注:尝试从表单中分离函数。除非那个锚点(包裹'')用于特定目的,否则你最好没有它(例如:你可以使用不同的标签)。 – technophobia

2

首先,如果你要添加一个图标到标题栏,我会建议应用一个类到那个对话框和stylin用CSS代替它。例如:

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

如果你仍然想添加一个自定义的方法,这里的documentation说什么:

提供一个回调函数来处理作为初始化选项,创建事件。

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

按类型绑定到创建事件:dialogcreate。

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

试图“创造”的方法是使用该事件创建对话框时。我需要在运行时添加一个图标。 –

+0

应该澄清,在你的问题 - 很高兴你解决了你的问题。 – technophobia

相关问题