成功和失败回调的jQuery插件

时间:2016-08-19 10:40:11

标签: jquery

我写了这个插件,我经常使用它,我喜欢它,因为大多数时候我只检查是否true。但是我只是想知道结果是否是false

我想我想在函数内部进行successfailure回调,但我无法弄清楚如何返回它。推迟和承诺正在破坏一个脑细胞。

jQuery.fn.exists = function(fn) {
    if (this.length > 0) {
        var f = arguments[0];
        arguments[0] = function(e) {
            f(e);
        }
        fn.apply(this, arguments);
        return fn ? this.bind(name, fn) : this.trigger(name);
    } else {
        return this.length > 0;
    }
}

1 个答案:

答案 0 :(得分:0)

如果你能提供一个例子它会很有用,这个插件的用途以及最终结果对我来说有点不清楚。

但我确实知道承诺,请看下面。

jQuery.fn.exists = function(fn) {
    var deferredObj = jQuery.Deferred();
    if (this.length > 0) {
        var f = arguments[0];
        arguments[0] = function(e) {
            f(e);
        }
        fn.apply(this, arguments);
        if(fn) {  this.bind(name, fn) 
        } else {  this.trigger(name)} ;
        deferredObj.resolve( "some success value" );
    } else {
        deferredObj.reject( "Length is not greater then 0" );
    }
    return deferredObj.promise;
}

您添加的代码段没有异步操作,所以我认为使用promises没有任何好处,只需一个简单的返回布尔就足够了。

codepen示例可能有助于清除您遇到的问题。