将上下文传递给 jQuery 中的 ajax/success 函数
我在表单元素上调用此函数,并根据 json 对象包含的内容更改表单元素的背景。本质上是一个简化的验证 - 但我不想使用 jQuery 臃肿的验证插件。
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
};
I call this function on a form element, and based on what the json object contains, change the background of a form element. Essentially a simplified validation - but I don't wanna use jQuery's bloated validation plugins.
IV.validSimple
(
{
obj: '#email',
event: 'blur',
check: 'emailexists'
}
);
The problem is (the closure context/scope drives me mad :), how can I pass the d variable (object) to the success callback (_IV.bool) in the code below.
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
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
或者,您可以设置
context
选项:并在
bool
中使用$(this)
而不是$(obj)
。使用您认为更合乎逻辑的任何方式。
Alternatively, you could set the
context
option:and use
$(this)
insidebool
instead of$(obj)
.Use whatever way seems more logical to you.
只需
在查询初始化代码中执行以下操作并重新定义
bool
即可:just do
in your query initialization code and redefine
bool
this way: