JS コードをクリーンアップしていて、名前空間を作成して JS OO を使用したいと考えています。オブジェクト リテラル パターンに関する Rebecca Murphey による非常にすばらしいチュートリアルを見つけました。
今、これをどのように使用して jQuery UI のオートコンプリートを実現できるかを考えています。
// Pseudocode
$('#input_field').myNameSpace.my_search();
var myNameSpace= {
my_search : function() {
$(this).autocomplete({...});
},
my_other_function: function() {}
};
現在、私は自分のプラグインを使用しています:
$('#input_field').my_search();
(function ($) {
$.fn.my_search = function () {
$(this).autocomplete({
minLength: 2,
source: function( request, response ) {
jQuery.ajax({
url: callback_url,
dataType: "json",
data: {
term: request.term
},
success: function( data ) {
response( jQuery.map( data, function( item ) {
return {
id: item.id,
value: item.name,
name_encoded: item.name_encoded
}
}));
}
});
},
select: function( event, ui ) {
(...)
}
});
}
})(jQuery);
どんな助けでも感謝します。
更新
私の最初の例はかなり似ていて、James Kyburz も非常に似ていました (しかし動作していました)。複雑な戻りデータを避けるために、ジェームズの答えを単純化しました。
(function () {
// Namspace which also kind of works like an interface
$.fn.my_name_space = function(opt) {
this.autosuggest_brand = autosuggest.autosuggest_brand;
return this;
}
var autosuggest = {
autosuggest_brand : function(action) {
$(this).autocomplete({
// Autocomplete stuff here
});
},
som_other_function _ function() {}
}
})(jQuery);