【问题标题】:add custom method to jquery ui dialog将自定义方法添加到 jquery ui 对话框
【发布时间】:2012-10-01 18:53:38
【问题描述】:

我该怎么做:

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

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

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

【问题讨论】:

  • @Ohgodwhy:我已经更新了我的问题,以展示我到目前为止所做的尝试

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


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • “创建”方法用于在创建对话框时使用该事件。我需要在运行时添加一个图标。
  • 应该在您的问题中澄清这一点 - 很高兴您解决了您的问题。
【解决方案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;
}

Langdon 的 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>");
    }
});

【讨论】:

  • 旁注:尝试将形式与功能分开。除非那个锚点(包装 &lt;span class='ui-icon'&gt;&lt;/span&gt; 有特定用途,否则最好不要使用它(即:您可以使用不同的标签)。
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
相关资源
最近更新 更多