Es gibt einige kleinere Optimierungsprobleme unadressierte durch die vorhandenen Antworten, also werde ich meinen Hut in den Ring werfen mit dem, was ich glaube, ist der lesbarste/performanteste Code.
ein jQuery-Erweiterung Methode wie folgt hinzufügen, die wird Kurzschluss:
/**
* Determines whether all elements of a sequence satisfy a condition.
* @@param {function} predicate - A function to test each element for a condition.
* @@return {boolean} true if every element of the source sequence passes the test in the specified predicate
*/
$.fn.all = function (predicate) {
$(this).each(function (i, el) {
if (!predicate.call(this, i, el)) return false;
});
// we made it this far, we're good.
return true;
};
Dann es so nennen:
var allValid = $("form :input").all(function() {
return $(this).valid();
});
I glaube nicht, dass jQuery das hat. Underscore.js hat '$ .every()'. Es sollte einfach sein, in jQuery mit '$ .filter 'zu implementieren. – Barmar
Hinweis: Wenn Sie eine Möglichkeit finden, Ihre Bedingung als Selektor zu beschreiben, können Sie die Anzahl der Elemente in der Sammlung 'inputs.remove (' [Wert = ...] ') überprüfen. Length == 0' Etwas im Sinne eines "Wert nicht leer Selektor": http://StackOverflow.com/Questions/10641258/Jquery-Select-Data-Attributes-that-arent-Empty – AaronLS
@Barmar, jeder() ist genau das, was ich brauche und Zufällig habe ich schon als Abhängigkeit unterstrichen :). danke – parliament