在jQuery UI 1.10中的Dialog标题中使用HTML

时间:2013-01-23 20:28:50

标签: jquery-ui

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

3 个答案:

答案 0 :(得分:73)

这将覆盖设置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);
        }
    }
}));

答案 1 :(得分:11)

如果你犹豫覆盖jQuery的_title方法,你可以在jQuery对话框的open事件的title元素上使用html,append或类似的方法,如下所示:

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

以上解析了HTML,同时绕过了jQuery的title方法。由于它发生在公开活动中,用户体验仍然是无缝的。刚刚在一个项目中做到了这一点,并且工作得非常好。

答案 2 :(得分:0)

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

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

var dialogTitle = $('#element').closest('.ui-dialog').find('.ui-dialog-title');
dialogTitle.html('<strong>hello world</strong>');