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实现点击 ...
随机推荐
- Window.Open参数、返回值
一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name, ...
- iOS 进阶 第十三天(0414)
0414 画线.圆和圆弧的第二种方法 5中方法画矩形: 第二种画图形的方法: 之前做的方法都是先把要画的元素缓存到图形上下文CGConteextRef中去,现在第二种方法也缓存到CGPath中去.其实 ...
- cxf简单实例
CXF是一个基于 Servlet 技术的 SOA 应用开发框架,简单来说,就是WebService的轻量级实现. 1.下载开发包:http://cxf.apache.org/download.html ...
- Oracle 存储过程实例2
--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p ( --参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is ...
- Android 自定义Toast,不使用系统Toast
效果图: 创建Toast类 package com.example.messageboxtest; import android.app.Activity; import android.conten ...
- 想成为真正的代码gg,目标
转眼已而大二了,可是在这上了一个星期的课,感觉生活非常的茫然.当然这与我处在的环境有一定的关系. 处在这样的学校,想努力可是让我心凉的是没有一个老师肯真心带学生,, 学校办的各种事情都很坑,,我不怕自 ...
- WCF 基础
ServiceModel 配置元素 Binding 配置元素: 客户端Web.config: <?xml version="1.0" encoding="utf-8 ...
- 如何将jsp中<input>设为只读
将一个input变为只读,可以使用 readonly 属性 和 disabled 属性. 用disabled 属性时,文字显示为灰色. 下面的两种方法都是可以的: <input id =&q ...
- Why am I able to change the contents of const char *ptr?
http://stackoverflow.com/questions/3228664/why-am-i-able-to-change-the-contents-of-const-char-ptr I ...
- NGUI Tutorial 3
一. Create a Button 一.(Menu)NGUI -> Create -> Sprite 二.attach box colider to the Sprite , then ...