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 cookie解码函数(兼容ff)
Mar 17 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 Javascript
浅析javascript的return语句
Dec 15 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
PHP的全局错误处理详解
2016/04/25 PHP
php图像验证码生成代码
2017/06/08 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
Python运算符重载用法实例
2015/05/28 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
python实现彩票系统
2020/06/28 Python
python关闭占用端口方式
2019/12/17 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
大学生活学习的自我评价
2013/12/03 职场文书
买房子个人收入证明
2014/01/16 职场文书
金融管理专业求职信
2014/07/10 职场文书
联谊活动总结
2014/08/28 职场文书
市场营销工作计划书
2014/09/15 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
员工离职感谢信
2015/01/22 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
创业计划书之家教托管
2019/09/25 职场文书