3

我有这个小提琴http://jsfiddle.net/cdG94/2/我正在尝试更改 jquery UI 对话标题..当我使用 Jquery 1.9 或更低版本时它工作正常但是当我去更高的库时它只是直接显示 HTML ..我在这里做错了什么。我使用的是 Jquery 1.10.2 和 jQuery UI - v1.10.3

<button id="opener">Open the dialog</button>
<div id="wrapper">
<p>Some txt goes here</p>
</div>

$('#wrapper').dialog({
    autoOpen: false,
    minHeight: 400,
    minWidth: 600,
    title: function () {
                   return "Testing&nbsp<span style=\"font-size:smaller;\">Testing the HTML .</span>";
               }
});
$('#opener').click(function() {
    $('#wrapper').dialog('open');
    return false;
});

谢谢

4

3 回答 3

3

至于title选项从 html 更改为文本,您可以在 jQuery UI 对话框窗口标题中调整小技巧以面对 html 内容。

这不是最佳实践,但有时可能是一种解决方案。这是一个例子:

在创建对话框并手动更改标题 .html 时触发函数

$('#wrapper').dialog({
    autoOpen: false,
    minHeight: 400,
    minWidth: 600,
    create: function () {
        $('#wrapper').prev().html($('#wrapper').prev().text());
    },
    title: function () {
        return "Testing&nbsp<span style=\"font-size:smaller;\">Testing the HTML .</span>";
    }
});
$('#opener').click(function () {
    $('#wrapper').dialog('open');
    return false;
});

这是小提琴:http: //jsfiddle.net/zur4ik/cdG94/8/

于 2013-10-23T18:47:09.697 回答
3

在 jQuery UI 1.10 中,他们更改了title选项,以便它使用.text()而不是.html()设置对话框的标题:

来自 jQuery UI 1.10发行说明

将标题选项从 HTML 更改为文本

( #6016 ) 对话框标题通过内容元素上的title选项或属性进行控制。title标题之前已设置为 HTML,但由于标题通常是纯文本,因此对于没有意识到该值被设置为 HTML 的用户来说,这很容易导致脚本漏洞。因此,标题现在设置为文本。如果您需要为对话框标题添加自定义格式,您可以覆盖_title()对话框上的方法。

因此,根据 jQuery UI 团队的建议,要恢复到原始行为,您可以这样做:

$.widget("ui.dialog", $.extend({}, $.ui.dialog.prototype, {
    _title: function (title) {
        if (!this.options.title) {
            title.html("&#160;");
        }
        title.html(this.options.title);
    }
}));

但请注意(如果您允许用户提供的输入出现在标题中)可能存在 XSS 漏洞,这是更改的最初原因!

(演示在http://jsfiddle.net/alnitak/bJ47w/

于 2013-10-23T18:33:48.170 回答
0

正如其他人所说,较新版本的 JQuery UI 不使用 HTML。

但是,您似乎只是想使文本变小。为什么不使用 CSS 执行此操作:

.ui-dialog-title{
    font-size: smaller !important;
}
于 2013-10-23T18:37:28.817 回答