jquery select操作和联动操作
(function(){
//select操作
$.fn.loadSelect = function(opt){
opt = $.extend({}, {
required:false,//为真则添加<option value="" selected="selected">required值</option>
nodata:null,//子级无数据时 select 的状态。可设置为:"none"(display隐藏) | "hidden"(visibility隐藏) | 无
data:[],
loadCall:function(){}
}, opt);
var d = {}, callback = function(data, s){
var html = '';
$.each(data||[], function(i,n){
d = n.id ? n : {
id:i,
text:n
};
html += '<option value="'+d.id+'"'+((opt.def != undefined && (opt.def == d.id || opt.def == d.text)) ? ' selected="selected"' : '')+'>'+d.text+'</option>';
});
s.html(r+html);
(r || html) && s.trigger('change');
switch(opt.nodata){
case 'none':
html === '' ? s.hide() : s.show();
break;
case 'hidden':
s.css('visibility', html === '' ? 'hidden' : 'visible');
break;
}
$.isFunction(opt.loadCall) && opt.loadCall.call(s);
}, r = opt.required ? '<option value="">'+($.type(opt.required) == 'string' ? opt.required : '-请选择-')+'</option>' : '';
return this.each(function(){
var s = $(this);
if(s.is('select')){
if(typeof(opt.data) === 'string'){
s.empty();
$.getJSON(opt.data, function(json){
callback(json, s);
});
}else{
callback(opt.data, s);
}
}
});
},
//select联动
$.fn.linkage = function(opt){
opt = $.extend({}, {
build:true,//自动创建不存在的?
selects:['#city', '#area'],//子集select,按顺序,jquery选择器(.#)
seldef:[],//默认值,1以后和上项对应,可是id或者text
required:true,
nodata:'',
url:'/company/getCity.html?id={$id}',//子数据,string,{$id} or {$text}页码信息
data:[],//父级的数据
def:0//父级默认值
}, opt);
var mkSelect = function(i){
var n = child[i], nN = $(n);
if( i && n && opt.build && nN.length === 0 ){
var sn = n.substr(1), ci = n.substr(0, 1) == '#' ? 'id="'+sn+'"' : 'class="'+sn+'"';
nN = $(child[i-1]).after('<select name="'+sn+'" '+ci+'></select>').next();
}
!nN.data('linkage') && nN.change(function(){
mkSelect(i+1).loadSelect({
data: this.value ? opt.url.sprintf({
id: this.value,
text: this.selectedIndex >= 0 ? this.options[this.selectedIndex].text : ''
}) : [],
nodata:opt.nodata,
required:opt.required,
def:opt.seldef[i]||''
});
}).data('linkage', true);
return nN;
}, child = opt.selects||[];
child.unshift(this);
var s = mkSelect(0);
opt.data.length && s.loadSelect({
data:opt.data,
def:opt.def
});
return this;
},
//jquery.printf
String.prototype.sprintf = function(data, def) {
return this.replace(/(?:\{\$)([\w\d\-\_]+)(?:\})/g, function() {
return data[arguments[1]]||def||'';
});
}
});
示例:
<div class="jumbotron">
<h1>联动测试</h1>
<select name="" id="addr_prv"></select>
</div>
<script type="text/javascript">
In.ready(function(){
$('#addr_prv').linkage({data:'/company/getCity.html',seldef:[37,567]});
});
</script>
jquery select操作和联动操作的更多相关文章
- jquery select取值,赋值操作
select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...
- jQuery select的操作代码
jQuery對select的操作的实际应用代码. //改變時的事件 复制代码代码如下: $("#testSelect").change(function(){ //事件發生 j ...
- JS对select动态添加option操作 (三级联动) (搜索拼接)
以下纯属自我理解之下再东搜西查的内容~ JS对select动态添加option操作有个高大上的艺名叫多级联动:第一级改变时,第二级跟着变,第二级改变时,第三级跟着变... 本菜鸟是在工作中遇到做收货地 ...
- jQuery select的操作实现代码
//改变时的事件 $("#testSelect").change(function(){ //事件发生生 jQuery('option:selected', this ...
- Jquery的事件操作和文档操作
对于熟悉前端开发的小伙伴,相信对于Jquery一定不陌生,相对于JavaScript的繁琐,Jquery更加的简洁,当然简洁不意味着简单,我们可以使用Jquery完成我们想要实现全部功能,这里为小白们 ...
- jQuery基础知识点(DOM操作)
1.样式属性操作 1)设置样式属性操作 ①设置单个样式: // 第一个参数表示:样式属性名称 // 第二个参数表示:样式属性值 $(selector).css(“color”, ...
- jquery系列教程4-事件操作全解
点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...
- jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax
jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方 ...
- jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象
这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...
随机推荐
- ios检查版本更新
场景 在我们使用应用时,一打开应用,如果此应用有新的版本,常常能在应用中给出提示,是否要更新此应用.所以,我们就来看看,版本更新是如何实现的. 应用 苹果给了我们一个接口,能根据应用i ...
- OC面向对象封装
面向对象语言的三大特性:封装.继承.多态 封装:不暴露自己类的内部的属性,提高自己的数据的安全性:就像一个接线盒一样,内部结构看不到,只有外部的接口提供给我们使用,这样既安全又美观:在代码方面就是结构 ...
- JavaScript高级---组合模式设计
一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...
- 找不到对应的webservice配置参数[ProcessService]
在UI端 保存时 界面显示无法保存 且报此错误 “找不到对应的webservice配置参数[ProcessService]” 此下为解决方法: 首先 在[应用管理平台]--[参数模板设置] 找到你的参 ...
- EBP与ESP寄存器的使用
push ebp mov esp,ebp esp是堆栈指针 ebp是基址指针 这两条指令的意思是将栈顶指向ebp的地址 ---------------------------------------- ...
- 【Entity Framework】 Entity Framework资料汇总
Fluent API : http://social.msdn.microsoft.com/Search/zh-CN?query=Fluent%20API&Refinement=95& ...
- String.IsNullOrEmpty()和String.IsNullOrWhiteSpace()
转自:http://hi.baidu.com/saclrpqmttbntyq/item/4592fc72c5a19e5c0d0a07eb 由于总用 String.IsNullOrEmpty( s ) ...
- hdoj 1102 Constructing Roads
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1102 分析:看到这题给出的都是矩阵形式,就知道了可以用Prim算法求MST. #include <i ...
- POJ2513Colored Sticks
http://poj.org/problem?id=2513 题意 : 一些木棒,两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 思路 : 这个题的话就 ...
- Intellij 导入play framework 项目
新建一个项目 play new helloworld IshallbeThatIshallbe:~ iamthat$ mkdir temp IshallbeThatIshallbe:~ iamthat ...