Heim >php教程 >PHP开发 >Beispiel für eine jQuery-Plug-in-Erweiterung [Rückruffunktion hinzufügen]

Beispiel für eine jQuery-Plug-in-Erweiterung [Rückruffunktion hinzufügen]

高洛峰
高洛峰Original
2016-12-05 10:06:421233Durchsuche

Die Beispiele in diesem Artikel beschreiben die jQuery-Plug-in-Erweiterungsmethode. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

<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>

Der Callback-Parameter muss eine Funktion sein, um gültig zu sein. Um die Rolle des Rückrufs zu spielen.

<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>

Wenn foo3 keine Funktion ist, wird jb51.net angezeigt

jQuery-Instanz

Originalfunktion

$.fn.citySelect=function(settings)

Rückruf hinzufügen

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

Der Rückruffunktion einen Wert zuweisen

//选项变动赋值事件
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); // 返回两个处理好的数据
  }
};

Rufen Sie die Provinz-, Stadt- und Kreisdatendaten sowie den ausgelösten Änderungsereignistyp „areaType“ ab

// 选择省份时发生事件
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;); // 返回数据
});

Ausführen in jedes Ereignis

Frontend Verwenden Sie

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

, um die vom Rückruf zurückgegebenen Daten für die selectAgent-Funktion

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

um den entsprechenden Agenten über Ajax-Daten abzurufen.

Das Modifikations-Plug-in ist abgeschlossen.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn