本文實例講述了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('jb51.net'); } } 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不是函數的時候,彈出jb51.net
jQuery實例
原函數
$.fn.citySelect=function(settings)
調
$.fn.citySelect=function(settings, changeHandle) // 添加回调函数changeHandle取得省市縣資料data以及觸發的change事件類型areaType
//选项变动赋值事件 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); // 返回两个处理好的数据 } };在各個事件中執行前端使用
// 选择省份时发生事件 prov_obj.bind("change",function(){ cityStart(); selectChange('prov'); // 返回数据 }); // 选择市级时发生事件 city_obj.bind("change",function(){ distStart(); selectChange('city'); // 返回数据 }); // 选择区级时发生事件 dist_obj.bind("change",function(){ selectChange('dist'); // 返回数据 });ajax取得對應的代理商資料。 改造插件完成。