jqueryプラグインを自分でカプセル化
10167 ワード
まず.extend、.e x t e n d、.dataの2つの関数について説明する.extendと継承、主にデータの組み立て、使用方式に用いる.e x t e n dと継承、主にデータの組み立て、使用方式に用いる.extend({},param 1,param 2);このとき得られるデータはparam 1がparam 2のデータを継承するものであり、param 1にあるデータparam 2にもparam 2があるとparam 1の同じデータを上書きするため、2つのパラメータの順序が乱れてはならない.dataは、ある属性を設定および取得するためのパラメータ値である.パラメータ値を設定する.d a t aは、ある属性を設定および取得するためのパラメータ値である.data(「セレクタ」,「属性名」,{キー:値})または(セレクタ).data(name,value)は値(セレクタ).d a t a(n a m e,v a l u e)は値をとる.data(「セレクタ」,「属性名」).キー名,(「セレクタ」).data(name),(「セレクタ」).d a t a(n a m e),(「セレクタ」).data()取得すべての値は、バックグラウンド取得データで組み立てられたドロップダウンボックスを例にとる
(function($){
/** ,jquery */
$.fn.select=function(options,param){
if(typeof options == "string"){
var method = $.fn.select.methods[options];
if(method){ return method(this,param); }
}
}
/** */
$.fn.select.methods={
onLoadSuccess: function(){},
onSelect: function(record){},
loadData: function(jq, data){
return jq.each(function(){ loadData(this, data); });
},
reload: function(jq, ajax){
return jq.each(function(){ request(this, ajax); });
},
setValue: function(jq, value){
return jq.each(function(){ setValue(this, value); });
}
}
/** */
$.fn.select3.defaults = {
id: null,
disabled: false,
//url:base_url+'/select/getSelectProj',
dataType:'json',
type:'GET',
//contentType:'application/json',
valueField: 'uuid',
textField: 'name',
onLoadSuccess: function(data){},//
onLoadError: function(err){},
onSelect:function(row){}//
};
/** */
function request(target, options){
var opts = $.data(target, 'select3').options;
if (options.url){
opts = $.extend(opts, options);
}else{
return;
}
$.ajax({ url : opts.url, type : opts.type, data : opts.param, //dataType : opts.dataType, contentType : opts.contentType, success:function(data){ loadData(target, data); }, error:function(){ opts.onLoadError.apply(this, arguments); } })
};
/** */
function loadData(target, data){
var rows = data.rows;
var opts = $.data(target, 'select3').options;
$(target).empty();
for(var i=0,j=rows.length; i
var item = $(').appendTo(target);
item.attr('value', rows[i][opts.valueField]);
item.html(rows[i][opts.textField]);
}
opts.onLoadSuccess.call(target, data);//
$(target).change(function(){ var itemValue = $(this).children('option:selected').val(); for(var i=0,j=rows.length; i if (rows[i][opts.valueField] == itemValue){ opts.onSelect.call(target, rows[i]); return; } } }) ; }; /** */ function setValue(target, value){ var opts = $.data(target, 'select3').options; $(target).val(value); }; })(jQuery)
リファレンスプラグインはまずプラグインを導入し、初期化します.<script src="select.js">script>
<script language="javascript">
//
$("#id").select({
url:,
onLoadSuccess:function(){
}
});
//
$("#id").("reload",{ });
script>