Как удалить неиспользуемые классы из JQuery UI - PullRequest
4 голосов
/ 01 декабря 2011

Мы используем JQuery UI lib для некоторых улучшений интерфейса, которые прекрасно работают.Но поскольку нам не нужно поддерживать IE6 и другие старые браузеры, нет необходимости в таких классах, как:

.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl

, которые добавляются пользовательским интерфейсом JQuery,Есть ли способ сказать JQuery UI не добавлять их?Удалить из него стиль не проблема, но он выглядит не очень хорошо, когда у вас много пустых классов.

Ответы [ 2 ]

6 голосов
/ 01 декабря 2011

Это один из возможных способов достижения этого.

Виджеты пользовательского интерфейса jquery вызывают событие 'create', которое запускается между выполнением методов _create () и _init ():

this._create();
this._trigger( "create" );
this._init();

Это событие вызывается из виджета базового объекта, поэтому оно доступно для всех реализующих его виджетов.

Классы для 'ui-corner-xxx' (и других) обычно создаются в 'Метод _create (), чтобы вы могли связать обработчик событий с опцией 'create' виджетов, чтобы удалить эти классы.Примерно так:

var classesToRemove = ['ui-corner-all', 'ui-corner-top',
    'ui-corner-bottom', 'ui-corner-right', 'ui-corner-left',
    'ui-corner-tl', 'ui-corner-tr', 'ui-corner-bl', 'ui-corner-br'];

var removeClassesCreateHandler = function(event, ui) {
    var that = this;
    $.each(classesToRemove, function(idx, val) {
        $('.' + val, that).removeClass(val);
    });
};

$("#accordion").accordion({
    create: removeClassesCreateHandler
});

Вот рабочий пример для jsfiddle .


О событии create в jQuery UI Widgets

Важно отметить, что не все виджеты jQuery ui на самом деле реализуют Фабрику виджетов (благодаря решению, описанному выше, возможно).

Итак, хотя на странице документации отображается create опция, это не обязательно доступно.

Это относится, например, к DatePicker.Он по-прежнему опирается на довольно старый код и не реализует фабрику виджетов (пока - планируется реорганизация).

0 голосов
/ 01 декабря 2011

Я использовал Dust-Me селекторы , чтобы удалить ненужные CSS. Это очень помогло мне избавиться от неиспользуемых стилей.

...