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 相关文章推荐
filemanage功能中用到的common.js
Apr 08 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
Oct 21 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
Validform表单验证总结篇
Oct 31 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
javascript 中的继承实例详解
May 05 Javascript
JavaScript 中调用 Kotlin 方法实例详解
Jun 09 Javascript
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
Nov 27 Javascript
JavaScript对象拷贝与赋值操作实例分析
Dec 10 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 10 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程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
javascript常用方法总结
2015/05/14 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
layui分页效果实现代码
2017/05/19 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
vuex实现购物车的增加减少移除
2020/06/28 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
python中使用序列的方法
2015/08/03 Python
Python实现的矩阵类实例
2017/08/22 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
自荐书封面下载
2013/11/29 职场文书
大学自荐信
2013/12/12 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
大课间活动制度
2014/01/18 职场文书
2014年加油站工作总结
2014/12/04 职场文书
保证书格式
2015/01/16 职场文书
Pytest中conftest.py的用法
2021/06/27 Python