jquery - 将上下文传递给 jQuery 中的 ajax/success 函数

标签 jquery callback scope

我在表单元素上调用此函数,并根据 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
};

最佳答案

或者,您可以设置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)

使用您认为更合乎逻辑的任何方式。

关于jquery - 将上下文传递给 jQuery 中的 ajax/success 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076205/

相关文章:

javascript - 包含特定文本的特定 h2 上的 jQuery Onclick 事件

javascript - 如何使用 jQuery 动态更改 div 的渐变

javascript - 您可以在 JavaScript 中将对象方法作为回调传递吗?

JavaScript 变量范围。这里发生了什么?

go - 为什么 Go +build 标签会引入作用域问题?

javascript - Promise 返回错误值

javascript - Fullpage.js 选项 normalScrollElementTouchThreshold 有何作用?

javascript - 通过 jQuery (Javascript) 提交表单失败

Angular 2 : How to redirect to the login page when observable subscription fails?

javascript - 从 Javascript 中的回调函数获取变量