一つの便利な方法がArray.prototype.every
です:
if ($('.A, .B, .C').get().every(function(e) { return $(e).is(":visible"); })) {
... ES2015を使用して少ない扱いにくい見えます(別名「ES6」)矢印関数の構文:
if ($('.A, .B, .C').get().every(e => $(e).is(":visible"))) {
every
戻っtrue
コールバックがfalsy Vを返す場合、コールバックは、すべての要素についてtruthy値、false
を返す場合それがfalse
になるとすぐに停止します。
もう一つの便利な方法は、filter
次のとおりです。
var elements = $('.A, .B, .C');
if (elements.filter(":visible").length === elements.length) {
// Yes, they're all visible
}
あなたは自分自身に便利なareAll
機能与えることができる:
$.fn.areAll = function(arg) {
return this.get().every(function(e) { // Or of course use
return $(e).is(arg); // the `filter` version
}); // here if you prefer
};
を...そして
if ($('.A, .B, .C').areAll(":visible")) {
// ...
}
私が最初に考えました'.filter' alだったので、質問のコンテキスト+ –
明確で、速い答えを与えられた!フィルタオプションは私にとってはより良い解決策のように見えますが、比較するデータがたくさんある場合、最初の選択肢がどのように速くなるかを見ることができます。ありがとうTJ – Sach
@Sach:ええ、最初の1つは一時的なjQueryオブジェクト(その '$(e)')を作成することです。だからスイングとロータリー。 :-)喜んで助けた。 –