51

http://jqueryui.com/upgrade-guide/1.10/#changed-title-option-from-html-to-text

jQuery UI 1.10 使对话框标题只能是文本(不能是 html),以防止脚本漏洞。我不允许用户输入来生成这个标题,所以我仍然想使用 HTML,主要是在标题的左侧显示一个图标。

我将发布我对这个问题的解决方案,因为我还没有看到其他人问或回答这个问题。希望它会帮助其他人,或者其他人可能有更好的方法。

关于他们为什么这样做的更多信息:http: //bugs.jqueryui.com/ticket/6016

4

3 回答 3

79

这将覆盖设置 jQuery UI 对话框标题时使用的函数,允许它包含 HTML。

$.widget("ui.dialog", $.extend({}, $.ui.dialog.prototype, {
    _title: function(title) {
        if (!this.options.title ) {
            title.html(" ");
        } else {
            title.html(this.options.title);
        }
    }
}));
于 2013-01-23T20:28:49.660 回答
15

如果你对重写 jQuery 的 _title 方法犹豫不决,你可以在 jQuery 对话框的 open 事件中对 title 元素使用 html、append 或类似方法,如下所示:

$("#element").dialog({
  open: function() {
    $(this).find("span.ui-dialog-title").append("<span class='title'>" + subtitle + "</span>");
  }
});

上面的代码在绕过 jQuery 的 title 方法的同时正确地解析了 HTML。而且由于它发生在公开活动中,因此用户体验保持无缝。刚刚在一个项目上做了这个,效果很好。

于 2013-10-24T22:02:16.337 回答
0

这将在初始化对话框后修改标题

$('#element').dialog(options);

var dialogTitle = $('#element').closest('.ui-dialog').find('.ui-dialog-title');
dialogTitle.html('<strong>hello world</strong>');
于 2019-03-05T09:58:17.073 回答