自己做jQuery开源插件之一:三级联动插件
来源:互联网 发布:tvb翡翠台直播软件 编辑:程序博客网 时间:2024/05/21 08:38
从毕业到现在,大大小小的项目做了不少,基本上都是做的web,记得刚参加工作的时候对前端技术不怎么了解,还是以拖服务器控件为主,几乎不考虑用户体验,后来随着工作经验的不断积累,对前端技术逐渐开始感兴趣,并且不断深入学习,到现在完全痴迷于jquery,以至于现在做项目整个做下来看不到一个服务器端控件,全部都是客户端控件搭配jquery完成数据的获取、展示和提交。最近这一年对写jQuery插件特别感兴趣,总觉得自己封装的jQuery插件就是好用,看着公司很多个项目都用上了自己的插件,心里很有成就感,下面我就花一段时间整理一下我写过的各种jQuery插件,这一系列的文章适合熟悉jQuery语法的开发者阅读,初学者可能看得会比较吃力,我也不会一句一句的讲解代码,好了,废话不多说了,欢迎大家一起讨论和学习。
今天讲的第一个插件是比较简单的省市区三级联动插件,这里我想实现的效果是通过$("#DivID").MyAreaSelectPlugin ()直接在任意一个div里面显示一个三级联动插件,也就是说我们需要扩展 jQuery 元素集来提供MyAreaSelectPlugin ()这个方法,好了,首先我们需要一个js文件存放全国的省市区数据,这里我们以json格式保存,文件命名data.js,如下所示:
然后我们再新建一个Myareaselect.js文件用来写插件的代码,打开这个js文件,我们先写好jQuery插件的标准框架,如下所示:
(function ($) { $.fn.MyAreaSelectPlugin = function () { return this.each(function () { //此处写插件的核心代码 }) }})(jQuery)然后我们开始写插件的核心代码,本人写js代码习惯把几个js函数封装成一个json对象,这样子代码看上去会比较清爽,也更方便调用,所以我们先在MyAreaSelectPlugin 主函数里定义这样一个json对象,把自定义的方法都放在里面,如下所示:
$.fn.MyAreaSelectPlugin = function () { var methods = { Init: function () { $(this).append("<select id=\"S_P\"></select>"); $(this).append("<select id=\"S_C\"></select>"); $(this).append("<select id=\"S_A\"></select>"); methods.InitProvince(); }, InitProvince: function () { $.each(_areaselect_data['p'], function (index, value) { $("#S_P").append("<option value=" + value + ">" + value + "</option>"); }); methods.Bind("C", $("#S_P").val()); methods.Bind("A", $("#S_P").val() + "-" + $("#S_C").val()); $("#S_P").change(function () { methods.Bind("C", $("#S_P").val()); }); }, Bind: function (type, SelectValue) { if (type == "C") { $("#S_C").empty(); $.each(_areaselect_data['c'][SelectValue], function (index, value) { $("#S_C").append("<option value=" + value + ">" + value + "</option>"); }); methods.Bind("A", $("#S_P").val() + "-" + $("#S_C").val()); $("#S_C").change(function () { methods.Bind("A", $("#S_P").val() + "-" + $("#S_C").val()); }); } if (type == "A") { $("#S_A").empty(); if (_areaselect_data['a'][SelectValue] != null) { $.each(_areaselect_data['a'][SelectValue], function (index, value) { $("#S_A").append("<option value=" + value + ">" + value + "</option>"); }); } } } }; return this.each(function () { //此处写插件的核心代码}); }如上所示,我们定义了一个名为methods的json对象,里面写了三个js方法,分别是Init()、InitProvince()和Bind(),代码我就不一一讲解了,相信大家应该都能看懂,就是从data.js文件中获取json数据,然后用each()遍历,绑定到select控件上,通过select控件的change事件实现联动触发。
好了,代码写到这里,已经差不多快完成了,下面就是在return this.each(function(){})函数里调用就可以了(其实这里可以不使用return this.each()返回,因为这个插件作用于单个确定的对象,所以可以直接return this返回即可),代码如下所示:
这边我直接通过javascript中的call()方法将当前调用的对象传入此方法,至此代码全部完成,至于对call()方法不了解的童鞋可以去百度,顺便再看一下和apply()方法的区别,这里不再赘述。
最后,我们测试一下,新建一个aspx或者html页面,在页面上引用jquery.js、data.js和Myareaselect.js三个文件,然后书写如下代码:
这里的divtest是你打算放置三级联动控件的div的id,运行页面,一切OK!
很多人都搞不懂我为什么要花大量的时间去写jQuery插件,网上现在jQuery插件一大把,拿来用就是了,完全没必要自己写,我想说的是,别人写的再好那也只是别人的,你用100次别人的插件所学到的知识都比不上你自己写一个jQuery插件,只有自己动手去写,你才会发现jQuery的美妙之处!!!
return this.each(function () { methods.Init.call(this); });
这边我直接通过javascript中的call()方法将当前调用的对象传入此方法,至此代码全部完成,至于对call()方法不了解的童鞋可以去百度,顺便再看一下和apply()方法的区别,这里不再赘述。
最后,我们测试一下,新建一个aspx或者html页面,在页面上引用jquery.js、data.js和Myareaselect.js三个文件,然后书写如下代码:
$(function () { $("#divtest").MyAreaSelectPlugin(); });
这里的divtest是你打算放置三级联动控件的div的id,运行页面,一切OK!
很多人都搞不懂我为什么要花大量的时间去写jQuery插件,网上现在jQuery插件一大把,拿来用就是了,完全没必要自己写,我想说的是,别人写的再好那也只是别人的,你用100次别人的插件所学到的知识都比不上你自己写一个jQuery插件,只有自己动手去写,你才会发现jQuery的美妙之处!!!
1 0
- 自己做jQuery开源插件之一:三级联动插件
- Jquery 城市三级联动 插件
- jquery插件省市三级联动
- 用jQuery实现省市区三级联动(可做插件)
- jquery省市区三级联动插件,无ajax
- jquery省市区三级联动插件CitySelect教程
- 中国省市区地址三级联动jQuery插件
- 三级联动插件
- 插件实现三级联动
- jquery实现的三级联动地区 jquery插件
- jquery实现省市县三级联动的jQuery插件
- 自写日期年月日三级联动效果jquery插件
- 中国省市区地址三级联动jQuery插件 Distpicker
- 省市区地址三级联动jQuery插件Distpicker使用
- 车型选择三级联动插件
- 自己做jQuery开源插件之二:数据校验插件
- 自己做jQuery开源插件之三:文本框自动提示插件
- 自己做jQuery开源插件之四:弹出层插件
- 第四周 项目4扩展 多文件执行
- 【编程好习惯】判断失败而不是成功
- HDU 1012u Calculate e
- JVM工作原理之四:JVM内存管理
- SQLite入门使用教程(一)
- 自己做jQuery开源插件之一:三级联动插件
- JVM工作原理之五:JVM垃圾回收
- 2014.3.19号 22天已过去
- Linux if判断 -a 到 -z
- Java中常见问题(一)
- [LeetCode]Reverse Integer
- 敏捷开发系列之旅 第二站(走近XP极限编程)
- 停止monkey测试的笨方法
- 第四章 多视图应用
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
假肢的作用
上肢假肢
赛姆假肢
假肢 公司
假肢矫形工程专业
假肢登顶珠峰第一人
哪里有做假肢的
智能假肢腿价格多少
假肢脚板价格
手指假肢佩戴图片
假肢品牌排名
智能假肢手多少钱
小腿假肢多少钱
手指假肢安装
假肢安装价格
大腿假肢多少钱
装假肢需要多少钱
假肢公司哪家好
奥托博克假肢价格
假肢康复中心
假肢安装标准
假肢矫形器价格
假肢安装中心
装一个假肢多少钱
大腿假肢的价格
手指少一截做假肢
德国奥托博克假肢
奥托博克大腿假肢价格
古阿扎ovo假胸啊
假体胸
麦格胸假体
真平胸假平胸
假胸和真胸的图片
男假胸
假胸和真胸的区别
假胸图片
假胸怎么带
真胸
假胸 手感
假胸和真胸
假胸的手感