jQuery插件扩展实例【添加回调函数】


Posted in Javascript onNovember 26, 2016

本文实例讲述了jQuery插件扩展的方法。分享给大家供大家参考,具体如下:

<script language="javascript" type="text/javascript">
function doSomething(callback) {
  // … 
  // Call the callback
  callback('stuff', 'goes', 'here'); // 给callback赋值,callback是个函数变量
}
function foo1(a, b, c) {
  // I'm the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo1); // foo1函数将使用callback函数中的数据 stuff goes here
var foo2 = function(a,b,c) {
  // I'm the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo2); // foo2函数将使用callback函数中的数据 stuff goes here
doSomething(function(a,b,c){
  alert(a + " " + b + " " + c); // function函数将使用callback函数中的数据 stuff goes here
});
</script>

callback这个参数必须是函数才有效。才能起到回调的作用。

<script language="javascript" type="text/javascript">
function doSomething(callback) {
  // … 
  // Call the callback
  if(typeof callback === 'function'){
    callback('stuff', 'goes', 'here'); // 给callback赋值,callback是个函数变量
  }else{
    alert('3water.com');
  }
}
function foo1(a, b, c) {
  // I'm the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo1); // foo1函数将使用callback函数中的数据 stuff goes here
var foo2 = function(a,b,c) {
  // I'm the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo2); // foo2函数将使用callback函数中的数据 stuff goes here
doSomething(function(a,b,c){
  alert(a + " " + b + " " + c); // function函数将使用callback函数中的数据 stuff goes here
});
var foo3 = 'a';
doSomething(foo3);
</script>

foo3不是函数的时候,弹出3water.com

jQuery实例

原函数

$.fn.citySelect=function(settings)

添加回调

$.fn.citySelect=function(settings, changeHandle) // 添加回调函数changeHandle

给回调函数赋值

//选项变动赋值事件
var selectChange = function (areaType) { 
  if(typeof changeHandle === 'function'){ // 判断callback是否是函数
    var prov_id = prov_obj.get(0).selectedIndex;
    var city_id = city_obj.get(0).selectedIndex;
    var dist_id = dist_obj.get(0).selectedIndex;
    if(!settings.required){
      prov_id--;
      city_id--;
      dist_id--;
    };
    if(dist_id<0){
      var data = {
        prov: city_json.citylist[prov_id].p,
        city: city_json.citylist[prov_id].c[city_id].n,
        dist: null
      };
    }else{
      var data = {
        prov: city_json.citylist[prov_id].p,
        city: city_json.citylist[prov_id].c[city_id].n,
        dist: city_json.citylist[prov_id].c[city_id].a[dist_id].s
      };
    }
    changeHandle(data, areaType); // 返回两个处理好的数据
  }
};

获取省市县数据data以及触发的change事件类型areaType

// 选择省份时发生事件
prov_obj.bind("change",function(){
    cityStart();
    selectChange('prov'); // 返回数据
});
// 选择市级时发生事件
city_obj.bind("change",function(){
    distStart();
    selectChange('city'); // 返回数据
});
// 选择区级时发生事件
dist_obj.bind("change",function(){
    selectChange('dist'); // 返回数据
});

在各个事件中执行

前端使用

$("#s_city").citySelect({
  prov: "江苏省",
  city: "宿迁市",
  dist: "宿城区",
  nodata: "none"
},
function(data, type) {
  selectAgent(data.city, data.dist);
});

使用回调回来的data数据,用于selectAgent函数中

function selectAgent(city,district){
    $.ajax({
      type:"POST",
      url:"{sh::U('Index/ajax',array('todo'=>'getagent'))}",
      data:"city="+city+"&district="+district,
      success:function(json){
        json = JSON.parse(json);
        opt_str = "<option value=''>-请选择-</option>"
        if(json.status == 1){
          $.each(json.data,function(index,con){
            opt_str += "<option value="+con.id+">"+con.name+" 电话:"+con.tel+"</option>"
          })
        }
        $('#agent_id').html(opt_str);
      }
    });
}

去ajax获取相应的代理商数据。

改造插件完成。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
再谈javascript面向对象编程
Mar 18 Javascript
javascript表单验证和Window详解
Dec 11 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
Dec 17 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
May 09 Javascript
三种带箭头提示框总结实例
Jun 14 Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
浅析Vue 防抖与节流的使用
Nov 14 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 #Javascript
JS自定义混合Mixin函数示例
Nov 26 #Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 #Javascript
JS匿名函数类生成方式实例分析
Nov 26 #Javascript
正则表达式替换html元素属性的方法
Nov 26 #Javascript
js初始化验证实例详解
Nov 26 #Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 #Javascript
You might like
基于php验证码函数的使用示例
2013/05/03 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
类似框架的js代码
2006/11/09 Javascript
JS array 数组详解
2009/03/22 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
js如何验证密码强度
2020/03/18 Javascript
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python对象与引用的介绍
2019/01/24 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
基于Python的OCR实现示例
2020/04/03 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
教师岗位职责范本
2013/12/29 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
世界环境日活动总结
2015/02/11 职场文书
戒赌保证书
2015/05/11 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL