将上下文传递给jQuery中的ajax/success函数
问题描述:
我在表单元素上调用此函数,并根据json对象包含的内容更改表单元素的背景。本质上是一个简化的验证 - 但我不想使用jQuery的臃肿的验证插件。将上下文传递给jQuery中的ajax/success函数
IV.validSimple
(
{
obj: '#email',
event: 'blur',
check: 'emailexists'
}
);
的问题是(封闭上下文/范围使我狂:),我怎样才能在下面的代码的d变量(对象)传递给成功回调(_IV.bool)。
var IV =
{
urlBase: '/oink/ajax/',
validSimple: function(d)
{
var _IV = this;
$(d.obj).bind(d.event, function()
{
$.ajax
({
url: _IV.urlBase + d.check + '?' + $(d.obj).val(),
async: true,
dataType: 'json',
success: _IV.bool,
});
}
);
},
bool: function(data)
{
if (data.ok == 1)
$(obj).css('backgroundColor','#c5e8c5');
else
{
$(obj).css('backgroundColor','#f7c7c7').focus();
}
} //function
};
答
,你可以设置context
选项:
$.ajax({
url: _IV.urlBase + d.check + '?' + $(d.obj).val(),
dataType: 'json',
context: d.obj, // or context: d , don't know which one you want
success: _IV.bool,
});
并在bool
内部使用$(this)
而不是$(obj)
。
使用任何方式似乎更符合你的逻辑。
答
只是做
...
success: function(data) {
_IV.bool(data, d)
}
...
在查询初始化代码,并重新定义bool
这样:或者
...
bool: function(data, d) {
...
啊该死了,今天早上这么早了:DD。谢谢。 – Jauzsika