2011-12-01 47 views
4

我們正在使用JQuery UI lib進行一些非常好的界面增強功能。但是,由於我們並不需要支持IE6等舊版瀏覽器,沒有必要像類:如何從JQuery UI中刪除未使用的類

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

它們的jQuery UI添加。有什麼辦法可以告訴JQuery UI不要添加它們嗎?從它刪除樣式是沒有問題的,但是當你有很多空的類時,它看起來並不好。

+0

圖書館沒有選擇要添加或不添加哪些類。順便說一句,他們不支持IE6 *,他們在那裏用'border-radius'([doc](http://jqueryui.com/docs/Theming/API))來設置窗口小部件 - 並且它們不是傷害,除了你,沒有人去檢查你的HTML源代碼;-) –

+0

是的,我知道,但它不是必要的一些小部件。我瀏覽了文檔,沒有找到任何選項。只是要求確保我沒有忽視任何信息 –

回答

6

這是實現此目的的一種可能方式。

jQuery的UI部件引起),其被)的_create的執行(和_init之間觸發(一個「創建」事件方法:

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

此事件從所述基本對象的widget升高,從而它是可用於實現它的所有小部件。

'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部件的

要注意,並非所有的jQuery UI部件真正實現了Widget廠(由於上述的解決是可能的)是很重要的。

因此,即使文檔頁面顯示create選項,它不一定可用。

這就是Datepicker的情況。它仍然依賴於很老的代碼,並沒有實現Widget工廠(然而 - 它計劃被重構)。

0

我用Dust-Me selectors刪除不必要的CSS。它真的幫助我擺脫了未使用的風格。

+0

這是爲了在css文件中查找未使用的css選擇器,而不是將它們從html中刪除... –

+0

@DidierG .:糟糕。我想我應該再次通過質疑。 – xyz