jq插件开发ajax回调函数,jQuery插件回调函数和参数设置问题

我开发了以下插件

(function($) {

$.fn.addressSearch = function(settings) {

settings = jQuery.extend({

searchClass: "quickSearch",

checkElement: "href",

dataElement: "data",

countryListClass: "countryList",

countryCode: "11455",

errorMsg: "You can only search for address in the UK.",

houseNumberClass: "TextboxHouseNumber",

postcodeClass: "postcode",

addressLine1Class: "addSearchLine1",

addressLine2Class: "addSearchLine2",

addressLine3Class: "addSearchLine3",

addressTownCityClass: "addTownCity",

ajaxUrl: "/WebService/addressLook",

submitType: "POST",

dataType: "xml",

parameters: "",

addressProcessURL: "",

callbackFunctionSingleAddress: selectAddress, //Callback 1

callbackFunctionMultipleAddress: quickBoxSearch, //Callback 2

useExternalProcessPage: false,

validateCountry: true

}, settings);

var jQueryMatchedObj = this;

function _initialize() {

_startModal(this, jQueryMatchedObj);

return false;

}

function _startModal(objClicked, jQueryMatchedObj) {

$j(objClicked).addClass(settings.searchClass);

var countryList = "." + settings.countryListClass + "";

if (settings.validateCountry) {

if ($j(countryList) && $j(countryList).val() != settings.countryCode) {

alert(settings.errorMsg);

return false;

}

}

if (settings.parameters) {

$j.ajax({

url: settings.ajaxUrl,

type: settings.submitType,

dataType: settings.dataType,

data: settings.parameters,

success: function(res) {

var addresses = eval(res.getElementsByTagName('string')[0].firstChild.data);

if (addresses.length == 0)

alert('Your address could not be found, please enter it manually');

else if (addresses.length == 1) {

//Callback 1 and parameters set here

settings.callbackFunctionSingleAddress(

addresses[0].addressLine1,

addresses[0].addressLine2,

addresses[0].addressLine3,

addresses[0].town,

settings.TextboxHouseNumber,

settings.postcodeClass,

settings.addressTownCityClass,

settings.addressLine1Class,

settings.addressLine2Class,

settings.addressLine3Class

);

} else if (addresses.length > 1) {

//Callback 2 and parameters set here

settings.callbackFunctionMultipleAddress(

settings.callbackFunctionSingleAddress,

addresses,

settings.useExternalProcessPage,

settings.TextboxHouseNumber,

settings.postcodeClass,

settings.addressTownCityClass,

settings.addressLine1Class,

settings.addressLine2Class,

settings.addressLine3Class

);

}

}

});

}

return false;

}

return this.unbind('click').click(_initialize);

}

})(jQuery);

以上工作正常没有任何问题。我用下面的代码称之为

$('#mydiv').click(function() {

$(this).addressSearch(/* ... */);

});

但是现在我想通过在插件设置中传递回调函数和参数来进一步扩展它,因此插件将更加健壮。

我该怎么做,基本上我想通过

settings.callbackFunctionSingleAddress(

addresses[0].addressLine1,

addresses[0].addressLine2,

addresses[0].addressLine3,

addresses[0].town,

settings.TextboxHouseNumber,

settings.postcodeClass,

settings.addressTownCityClass,

settings.addressLine1Class,

settings.addressLine2Class,

settings.addressLine3Class

);

settings.callbackFunctionMultipleAddress(

settings.callbackFunctionSingleAddress,

addresses,

settings.useExternalProcessPage,

settings.TextboxHouseNumber,

settings.postcodeClass,

settings.addressTownCityClass,

settings.addressLine1Class,

settings.addressLine2Class,

settings.addressLine3Class

);

作为div的click事件的参数。看起来像,

$('#mydiv').click(function() {

$(this).addressSearch({

callbackFunctionSingleAddress: callbackFuntion(param1, param2)

});

});

以上是这个想法。这可能吗?请帮忙

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值