首先对
.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<j; i++){
var item = $('<option></option>').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<j; 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>