代码之家  ›  专栏  ›  技术社区  ›  Evan Carroll

如何使用jqueryui的突出显示和错误小部件?

  •  18
  • Evan Carroll  · 技术社区  · 14 年前

    jQuery UI 有一些很好的方便的CSS样式来提醒和突出显示。我可以在家里看到 the themeroller site --看右边。这些样式有Javascript接口吗?我们使用硬编码的CSS吗?记录在哪里?

    jQueryUI上是否有方法列表、作弊记录或除交互式文档以外的其他内容?

    4 回复  |  直到 14 年前
        1
  •  24
  •   flipdoubt    14 年前

    将适当的CSS类应用于 UI/Theming/API 页码: .ui状态突出显示 突出显示和 对于错误。你可以静态的或者使用 .addClass('ui-state-highlight') .addClass('ui-state-error') 动态地去做。

        2
  •  4
  •   jofitz    12 年前

    我已经修改了一个简短的jQuery函数,将给定的div集(包含文本)转换为error/highlight元素。

    你可以看到它的行动 this jsFiddle

    下面是javascript:

    //function to create error and alert dialogs
    function errorHighlight(e, type, icon) {
        if (!icon) {
            if (type === 'highlight') {
                icon = 'ui-icon-info';
            } else {
                icon = 'ui-icon-alert';
            }
        }
        return e.each(function() {
            $(this).addClass('ui-widget');
            var alertHtml = '<div class="ui-state-' + type + ' ui-corner-all" style="padding:0 .7em;">';
            alertHtml += '<p>';
            alertHtml += '<span class="ui-icon ' + icon + '" style="float:left;margin-right: .3em;"></span>';
            alertHtml += $(this).text();
            alertHtml += '</p>';
            alertHtml += '</div>';
    
            $(this).html(alertHtml);
        });
    }
    
    //error dialog
    (function($) {
        $.fn.error = function() {
            errorHighlight(this, 'error');
        };
    })(jQuery);
    
    //highlight (alert) dialog
    (function($) {
        $.fn.highlight = function() {
            errorHighlight(this, 'highlight');
        };
    })(jQuery);
    
        3
  •  2
  •   ajpiano    14 年前

        4
  •  2
  •   Naeel Maqsudov    10 年前

    我想再分享一个解决方案。它基于自定义小部件,允许添加标题和可自定义图标。尝试 Fiddle 或者看看下面:

    $.widget('custom.noteBox', {
    options: {
        icon: true,
        state: 'highlight'
    },
    _create: function () {
        var icon, note = $('<p>').html(this.element.html());
        if (this.options.icon === true) {
            switch (this.options.state) {
                case 'highlight':
                    icon = 'info';
                    break;
                case 'error':
                    icon = 'alert';
                    break;
                default:
                    icon = false;
            }
        } else {
            icon = this.options.icon;
        }
        if (icon) note.prepend($('<span>')
            .addClass('ui-icon ui-icon-' + icon)
            .css({
            'float': 'left',
            'margin-right': '.3em'
        }));
        var title = this.element.attr('title');
        if (title) note.prepend($('<strong>').text(title + ' '));
        this.element.addClass('ui-widget')
            .replaceWith($('<div>')
            .addClass('ui-state-' + this.options.state + ' ui-corner-all')
            .css({
            'margin-top': '20px',
            'padding': '0 .7em'
        })
            .append(note));
       }
    });
    
    
    $('.error').noteBox({
        state: 'error'
     });
    $('.info').noteBox();
    $('<div title="Note! ">I`m dynamically added #1</div>')
        .appendTo('body').noteBox({
        icon: 'folder-open'
     });
     $('<div title="Note! ">I`m dynamically added #2</div>')
        .appendTo('body').noteBox({
        state: 'error'
     });
     $('<div title="Note! ">I`m dynamically added #3</div>')
        .appendTo('body').noteBox({
        state: 'error',
        icon: 'trash'
     });