首頁  >  文章  >  php教程  >  jQuery外掛擴充實例【新增回呼函數】

jQuery外掛擴充實例【新增回呼函數】

高洛峰
高洛峰原創
2016-12-05 10:06:421191瀏覽

本文實例講述了jQuery插件擴充的方法。分享給大家供大家參考,具體如下:

<script language="javascript" type="text/javascript">
function doSomething(callback) {
  // … 
  // Call the callback
  callback(&#39;stuff&#39;, &#39;goes&#39;, &#39;here&#39;); // 给callback赋值,callback是个函数变量
}
function foo1(a, b, c) {
  // I&#39;m the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo1); // foo1函数将使用callback函数中的数据 stuff goes here
var foo2 = function(a,b,c) {
  // I&#39;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 === &#39;function&#39;){
    callback(&#39;stuff&#39;, &#39;goes&#39;, &#39;here&#39;); // 给callback赋值,callback是个函数变量
  }else{
    alert(&#39;jb51.net&#39;);
  }
}
function foo1(a, b, c) {
  // I&#39;m the callback
  alert(a + " " + b + " " + c);
}
doSomething(foo1); // foo1函数将使用callback函数中的数据 stuff goes here
var foo2 = function(a,b,c) {
  // I&#39;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 = &#39;a&#39;;
doSomething(foo3);
</script>

foo3不是函數的時候,彈出jb51.net

jQuery實例

原函數

$.fn.citySelect=function(settings)

   

調

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

   

取得省市縣資料data以及觸發的change事件類型areaType

//选项变动赋值事件
var selectChange = function (areaType) {
  if(typeof changeHandle === &#39;function&#39;){ // 判断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); // 返回两个处理好的数据
  }
};

   

在各個事件中執行

前端使用

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

 ajax取得對應的代理商資料。

改造插件完成。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn