Array.prototype.some返回真或假,所以你可以这样做:
.some(function(el){
return !isNaN(el.value);
}
您没有说错误来自哪里,是来自对isNumber的调用吗?
编辑
啊,所以你的问题是一些.
如果你想要一个 jQuery some方法,那么它至少应该模仿内置的 ECMAScript some,它有两个参数:一个回调函数和一个可选的this参数。
回调函数应采用三个参数:值、索引(可选)和用作this参数的可选值。它应该按升序访问数字成员,并且只访问实际存在的成员。
所以它应该是这样的(注意 jQuery.fn === jQuery.prototype):
jQuery.fn.some = function(fn, thisArg) {
var result;
for (var i=0, iLen = this.length; i<iLen; i++) {
if (this.hasOwnProperty(i)) {
if (typeof thisArg == 'undefined') {
result = fn(this[i], i, this);
} else {
result = fn.call(thisArg, this[i], i, this);
}
if (result) return true;
}
}
return false;
}
因此,如果您现在想要,您可以执行以下操作:
var result = $('#goodsFilter')
.find('input[type="number"]')
.some(function(el) {
return isNumber(el.value);
})? 1 : 0;
或者您可以执行以下任一操作将true强制为 1 并将false强制为 0:
var result = Number($('#goodsFilter')
.find('input[type="number"]')
.some(function(el) {
return isNumber(el.value);
}));
或者
var result = +($('#goodsFilter')
.find('input[type="number"]')
.some(function(el) {
return isNumber(el.value);
}));
以上只是简单测试,可选的thisArg参数可能是多余的。