首先对 .extend、 . e x t e n d 、 .data两个函数解释
.extend及继承,主要用于数据的组装,使用方式 . e x t e n d 及 继 承 , 主 要 用 于 数 据 的 组 装 , 使 用 方 式 .extend({},param1 ,param2);
这时得到的数据为param1继承param2的数据,如果param1有的数据param2中也有param2就会覆盖param1中相同的数据,所以两个参数的顺序不能乱。
.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>