jQuery .is(selector) - 所有选择器匹配参数?

时间:2017-03-04 17:42:49

标签: jquery if-statement jquery-selectors

if ($('.A, .B, .C').is(':visible'))

- 如果这些元素中至少有一个匹配给定的参数,则返回true。

如果所有这些元素匹配给定的参数,我该如何更改它以使其返回true? (该参数可以更改为:隐藏此示例,但这不是我要查找的内容)

1 个答案:

答案 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")) {
    // ...
}