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 判断字符串是否为数字的简单方法
Jul 25 Javascript
jQuery版Tab标签切换
Mar 16 Javascript
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
JavaScript中定义函数的三种方法
Mar 12 Javascript
jQuery中animate动画第二次点击事件没反应
May 07 Javascript
node.js+express制作网页计算器
Jan 17 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 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/06/03 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
python实现查询IP地址所在地
2015/03/29 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
小学科学教学反思
2014/01/26 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
中文专业自荐书
2014/06/29 职场文书
80后婚前协议书范本
2014/10/24 职场文书
工程技术员岗位职责
2015/04/11 职场文书
代理词怎么写
2015/05/25 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android