Проверьте свойство длины возвращаемых элементов.
if ( !$('#some_ul li:visible').length ) {
// do something only if all 'li's in a given ul are hidden
}
РЕДАКТИРОВАТЬ: изменено скрыто на видимое
РЕДАКТИРОВАТЬ: Разъяснения по использованию.length
свойство для логического теста. Пожалуйста, смотрите дальнейшие объяснения внизу этого ответа.
$('#some_ul li:visible').length
возвращает количество найденных элементов.Числовые значения равны true или false.
!
дает вам отрицательное значение его true / false.
Так что, если $('#some_ul li:visible').length
найдет 0 видимых элементов, это то же самоевозвращая false
.
Когда вы помещаете !
позади него, его логическое значение меняется на true
.Таким образом, если элементы visible
не найдены, код в вашем if()
будет запущен.
Это точно так же, как и:
if ( $('#some_ul li:visible').length == 0 ) {
// do something only if all 'li's in a given ul are hidden
}
... который принимает числовое значениезначение $('#some_ul li:visible').length
и преобразует его в логическое значение с помощью оператора ==
.
Чтобы использовать :hidden
, сначала необходимо получить общую длину, а затем сравнить ее со скрытой длиной.
var total = $('#some_ul li');
if ( $('#some_ul li:hidden').length == total ) {
// do something only if all 'li's in a given ul are hidden
}
РЕДАКТИРОВАТЬ: В ответ на ваш комментарий, для пояснения, есть несколько значений, которые будут равны true / false в тесте.
Вот несколько примеров значений, которые равны false:
var someVariable; // someVariable is undefined, equates to false
var someVariable = ''; // someVariable is an empty string, equates to false
var someVariable = false; // someVariable is a boolean false, equates to false
var someVariable = 0; // someVariable is number zero, equates to false
var someVariable = Number('a'); // someVariable is NaN (Not a Number), equates to false
var someVariable = null; // someVariable is null, equates to false
Вот несколько примеров, которые соответствуют true:
var someVariable = "false"; // someVariable is a string, equates to true
var someVariable = 123; // someVariable is a number greater than 0, equates to true
var someVariable = -123; // someVariable is a number less than 0, equates to true
var someVariable = true; // someVariable is a boolean true, equates to true
var someVariable = !false; // someVariable is a negated value that would
// otherwise be false, equates to true
Если вам интересноэффективное логическое значение любого значения, поместите !!
перед ним.
alert( !!123 ); // Alerts true
Первый !
преобразует значение в противоположность его действующего логического значения.Второй !
преобразует его обратно в его действующее логическое значение.
Например:
var a; // an undefined variable
alert( a ); // alerts undefined, logically equates to 'false'
alert( !a ); // alerts the boolean opposite of undefined, which is 'true'
alert( !!a ); // alerts the converts the boolean opposite 'true' back to 'false'