(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操作和联动操作的更多相关文章

  1. jquery select取值,赋值操作

    select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...

  2. jQuery select的操作代码

    jQuery對select的操作的实际应用代码. //改變時的事件  复制代码代码如下: $("#testSelect").change(function(){ //事件發生  j ...

  3. JS对select动态添加option操作 (三级联动) (搜索拼接)

    以下纯属自我理解之下再东搜西查的内容~ JS对select动态添加option操作有个高大上的艺名叫多级联动:第一级改变时,第二级跟着变,第二级改变时,第三级跟着变... 本菜鸟是在工作中遇到做收货地 ...

  4. jQuery select的操作实现代码

          //改变时的事件  $("#testSelect").change(function(){ //事件发生生 jQuery('option:selected', this ...

  5. Jquery的事件操作和文档操作

    对于熟悉前端开发的小伙伴,相信对于Jquery一定不陌生,相对于JavaScript的繁琐,Jquery更加的简洁,当然简洁不意味着简单,我们可以使用Jquery完成我们想要实现全部功能,这里为小白们 ...

  6. jQuery基础知识点(DOM操作)

    1.样式属性操作     1)设置样式属性操作         ①设置单个样式: // 第一个参数表示:样式属性名称 // 第二个参数表示:样式属性值 $(selector).css(“color”, ...

  7. jquery系列教程4-事件操作全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  8. jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax

    jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方 ...

  9. jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

    这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...

随机推荐

  1. Java异常的深入研究与分析

    前言 本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析.本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者.对于本文的内容,建议小白需要多多思 ...

  2. C#中使用SelectionStart属性指定输入框光标位置

    今天工作中遇到一个小BUG需要修改,需求为在文本框输入的过程中,如果数字是以0开头则自动消除0 如输入012,则显示12 很容易想到在textbox的text changed事件中判断,如果text是 ...

  3. PythonChallenge 2:爬虫和正则表达式

    题目: 解题思路:题目里已经说的很清楚了,字符可能在网页的源代码里.右键查看网页源代码,发现其中有一段:find rare characters in the mess below.有些人是直接把下面 ...

  4. pure.css

    注释中address是纠正的意思  等价于correct/*! Pure v0.5.0 Copyright 2014 Yahoo! Inc. All rights reserved. Licensed ...

  5. springMVC+ibatis数据持久化入门级学习例子

    1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...

  6. grub,mbr的那些事

    今天遇到一个问题是:双系统为win10和Ubuntu.启动模式为mbr,当前可以启动win10,但不能启动Ubuntu.先利用easybcd重新添加了一个,想着依旧用win10的启动项,(此处可以参考 ...

  7. selenium2 安装、简单使用及浏览器启动问题解决汇总

    一.selenium2 安装 1.安装jdk并配置环境变量 jdk需要1.6版本及以上的,这个从网上下载就可以,环境变量的配置前边的随笔整理过就不多说了. 2.安装Firefox,Selenium I ...

  8. NET权限系统开源项目

    http://www.cnblogs.com/yubaolee/p/OpenAuth.html http://www.cnblogs.com/guozili/p/3496265.html Sereni ...

  9. PHP设计模式——代理模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 代理模式为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和 ...

  10. 数据类型演示DataTypeDemo

    /***数据类型演示*/public class DataTypeDemo{ public static void main(String[] args){  //直接赋予的值,称为字面量  //by ...