我正在構建一個涉及創建幾個獨特的UI「窗口小部件」的應用程序,並且我很難找出用jQuery封裝這些UI組件背後的邏輯的良好實踐。這些主要是一次性組件,不會在應用程序中的多個地方重複使用。用jQuery封裝UI組件
我一直在試驗lowpro plugin,雖然它確實允許我想要的更多或更少,但我覺得我會通過使用它來反對「jQuery方式」。
爲了提供一些上下文,下面是使用lowpro編寫的內容的簡短摘錄。這是一個可排序的列表,其他元素可以用藥。當它初始化爲空時,它顯示一個佔位符。
FieldList = $.klass({
initialize: function() {
this.placeholder = $('#get-started-placeholder');
if (this.items().length == 0) {
this.deactivateList();
} else {
this.activateList();
}
},
items: function() {
return this.element.children('li:visible');
},
deactivateList: function() {
this.element.hide();
this.element.sortable('destroy');
this.placeholder.show();
var instance = this;
this.placeholder.droppable({
hoverClass: 'hovered',
drop: function(e, ui) { instance.receiveFirstField(ui.helper); }
});
},
activateList: function() {
this.placeholder.hide();
this.placeholder.droppable('destroy');
this.element.show();
var instance = this;
this.element.sortable({
placeholder: 'placeholder',
forcePlaceholderSize: false,
tolerance: 'pointer',
handle: 'h4',
opacity: 0.9,
zIndex: 90,
stop: function(e, ui) { instance.receiveField(ui.item); }
});
},
receiveFirstField: function(element) {
...
this.activateList();
},
receiveField: function(element) {
...
}
});
$(function() {
$('ol#fields').attach(FieldList);
}
請注意,我有一點的狀態會在這裏,而且我希望我能做出一些實例方法私人等,所以,任何jQuery的利弊,有可以告訴我,他們怎麼可以這樣做而不依賴像lowpro這樣的東西,這可能會使Javsacript變成它不應該是的東西?我有一種感覺,有一種乾淨的方式來完成這樣的模塊模式,我看到提到in this thread,但這些作品並沒有真正爲我而來。
謝謝!