是否有可能在不对原始源代码产生很大影响的情况下扩展 jQuery.first()
方法以便它可以接受谓词参数?从根本上说,我想要它做的是类似于 LINQ 的.First()
C# 方法。在 JavaScript 中,它看起来像这样:
function first(arr, predicate) {
for (var i = 0; i < arr.length; i++) {
// return the first item fulfilling the predicate
if (predicate.call(arr[i])) {
return arr[i];
}
}
}
var myArray = [1, 3, 5],
myPredicate = function() {
return this >= 2;
};
var result = first(myArray, myPredicate); // should give '3'
我知道它可以很容易地用 JavaScript 实现;我只是好奇是否可以在 jQuery 中轻松扩展现有方法。
使用的解决方案:
$.fn.firstOne = function(predicate) {
// validate the predicate is a function
if ($.isFunction(predicate)) {
// iterate through each item, finding the first match
for (var i = 0; i < this.length; i++) {
if (predicate.call(this.eq(i), i)) {
return this.eq(i);
}
}
}
// maintain chainability
return $();
};