Javascript JQuery小部件:在子小部件中设置上下文
我有一个小部件,它基本上在一个元素上创建一个JQuery日期选择器,然后处理从web服务检索数据以及基于返回的数据启用/禁用日期 小部件的定义如下-几个简单的默认选项:Javascript JQuery小部件:在子小部件中设置上下文,javascript,jquery,datepicker,closures,jquery-widgets,Javascript,Jquery,Datepicker,Closures,Jquery Widgets,我有一个小部件,它基本上在一个元素上创建一个JQuery日期选择器,然后处理从web服务检索数据以及基于返回的数据启用/禁用日期 小部件的定义如下-几个简单的默认选项: $.widget("XXXX.CalendarBooking", { options: { minDaysInAdvance: 0, maxDaysInAdvance: 0, productNumber: '', url: '', numberOfDays: 40 }, ...
$.widget("XXXX.CalendarBooking", {
options: {
minDaysInAdvance: 0,
maxDaysInAdvance: 0,
productNumber: '',
url: '',
numberOfDays: 40
},
...
构造函数如下所示,它在元素上创建日期选择器,然后设置用于检索数据和处理(启用)日期的函数:
processdate函数如下所示:
_processDate: function (date) {
// get availability
if (!this._availability) {
$.ajax({
async: false,
type: "POST",
contentType: "application/json; charset=utf-8",
url: this.options.url,
data: '{ productNumber: "' + this.options.productNumber + '", startDate: "' + date.toJSON() + '", numberOfDays: ' + numberOfDays + ' }',
dataType: "json",
success: function (msg) {
_setAvailability(msg.d);
},
error: function (xhr, ajaxOptions, thrownError) {
_setAvailability('error');
}
});
}
但是,当调用processdate时,上下文不在小部件中,因此我无法访问这些选项。我这样做是否正确,或者是否有方法重载processdate函数,以便在设置beforeShowDay的回调时,我可以传入选项,并且不会覆盖JQuery将传递给该函数的日期值?您可以使用
$.proxy
设置调用函数的上下文。试试这个:
beforeShowDay: $.proxy(this._processDate, this),
现在,在您的
\u processDate
函数中,这个
关键字将引用您的小部件。您可以使用this.element
访问引发事件的元素。您可以使用$.proxy
设置调用函数的上下文。试试这个:
beforeShowDay: $.proxy(this._processDate, this),
现在,在您的
\u processDate
函数中,这个
关键字将引用您的小部件。您可以使用this.element
访问引发事件的元素是的,这正是我所需要的。谢谢@肖恩:没问题,很乐意帮忙<代码>$。在制作小部件和插件时,代理绝对是无价的:)是的,这就是我需要的。谢谢@肖恩:没问题,很乐意帮忙<代码>$。在制作小部件和插件时,代理绝对是无价的:)