只有当给定ul中的所有li都被隐藏时,我才需要做一些事情。这似乎没有办法。有办法吗?
if ($('#some_ul li:hidden')) {
// do something only if all 'li's in a given ul are hidden
}
答案 0 :(得分:8)
检查返回元素的长度属性。
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。
!
给出了其真/假值的负数。
因此,如果$('#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'
答案 1 :(得分:1)
$("ul:not(:has(li:visible))")
这会选择那些没有可见<ul>
个孩子的<li>
。检查其length
属性是否有任何属性,或者在其上调用each()
为每个属性执行操作。
答案 2 :(得分:0)
你可以这样做:
if ($('#some_ul li').is(':hidden')) {
// do something only if all 'li's in a given ul are hidden
}
答案 3 :(得分:0)
我认为这就是你想要的
if ( $('#some_ul li:hidden').length == $('#some_ul li').length ) {
// do something only if all 'li's in a given ul are hidden
}