Istnieją pewne drobne problemy optymalizacyjne bezadresowa przez dotychczasowych odpowiedzi, więc rzucę mój kapelusz w ringu z tym, co uważam za najbardziej czytelny/wydajny kod.
Dodać metodę rozszerzenia jQuery jak ten, który będzie zwarcie:
/**
* 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;
};
Następnie nazwać tak:
var allValid = $("form :input").all(function() {
return $(this).valid();
});
I nie myśl, że jQuery to ma. Underscore.js ma '$ .every()'. Powinno być proste do wdrożenia w jQuery przy użyciu '$ .filter'. – Barmar
Uwaga, jeśli możesz znaleźć sposób na opisanie swojego stanu jako selektora, możesz sprawdzić liczbę elementów w kolekcji 'inputs.remove ('[value = ...]'. Length == 0' Something wzdłuż linii "select not empty selektor": http://stackoverflow.com/questions/10641258/jquery-select-data-attributes-that-arent-empty – AaronLS
@Barmar, every() jest dokładnie tym, czego potrzebuję i przypadkowo mają podkreślenie jako zależność już :). dzięki – parliament