我写了这个插件,我经常使用它,我喜欢它,因为大多数时候我只检查是否true
。但是我只是想知道结果是否是false
。
我想我想在函数内部进行success
和failure
回调,但我无法弄清楚如何返回它。推迟和承诺正在破坏一个脑细胞。
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;
}
}
答案 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示例可能有助于清除您遇到的问题。