if ($('.A, .B, .C').is(':visible'))
- 如果这些元素中至少有一个匹配给定的参数,则返回true。
如果所有这些元素匹配给定的参数,我该如何更改它以使其返回true? (该参数可以更改为:隐藏此示例,但这不是我要查找的内容)
答案 0 :(得分:2)
一个方便的方法是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
,如果回调返回假值,则返回false
,并在看到它时立即停止&#39 ; s将成为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")) {
// ...
}