Javascript 检查所有元素中的特定类

Javascript 检查所有元素中的特定类,javascript,jquery,Javascript,Jquery,当所有li元素都有“valid”类时,我想console.log()生成一条消息。目前,它通过键控功能连接到我的输入。我下面的jQuery代码不起作用。谢谢 HTML: 在标记中搜索未设置.valid类的li标记。如果没有,则认为所有lis都有效 if($('li:not(.valid)').length === 0) { // Everything's valid } 编辑:如果您不想检查页面上的所有li-标记,请更具体地了解元素,如\pswd\u info li检查\pswd\u i

当所有li元素都有“valid”类时,我想console.log()生成一条消息。目前,它通过键控功能连接到我的输入。我下面的jQuery代码不起作用。谢谢

HTML:


在标记中搜索未设置
.valid
类的
li
标记。如果没有,则认为所有
li
s都有效

if($('li:not(.valid)').length === 0) {
   // Everything's valid
}
编辑:如果您不想检查页面上的所有
li
-标记,请更具体地了解元素,如
\pswd\u info li
检查
\pswd\u info
中元素内的列表元素

资料来源:

当所有li元素都有“valid”类时,我想console.log()生成一条消息

因此,当没有
li
而没有“valid”类时,您希望记录一条消息

然后检查选择器
li:not(.valid)
是否返回空列表

使用vanilla JS,您可以得到类似的结果:

if (document.querySelectorAll('li:not(.valid)').length === 0) {
    console.log("Your message");
}
当所有li元素都有“valid”类时,我想console.log()生成一条消息

您可以比较两个jQuery选择器的内容,以检查它们是否都有特定的类,例如

if( $('#pswd_info ul li').length == $('#pswd_info ul li.valid').length){
    console.log('all li inside #pswd_info ul has the valid class');
}

您不会显示用于实际添加标记的任何逻辑,但当所有(5)个字段都
.valid
时会显示。但是,这个确切的字段并不是真正可持续的或可伸缩的-最好删除无效标记,并查找
.invalid
等于
0
的字段数

$('.newPwInput、.confirmPwInput').keyup(函数(){
var validCount=$('#pwd_info ul li.valid').length;//计算有多少元素具有有效标记
console.log(validCount);
如果(validCount==5){
log('所有字段都有效');
}
});

    至少 一个字母 至少 一个大写字母 至少 一个数字
  • 至少 10个字符
  • 密码必须匹配

您的代码逻辑显示“如果这有class
valid
,那么添加class
valid
”…我在您的标记中没有看到
\pswd\u info
。它是否在未显示的祖先元素上?对不起,我忘了。edited@TylerRoper这是正确的。冗余逻辑。而不是添加类,而是控制台日志
$(this)
。谢谢Tyler,我如何检查它们是否都有类“有效”?
size()
自jQuery 1.8以来一直被弃用。使用
.length
代替。谢谢@tyleroper,我完全忽略了这一点,我想知道在你的回答中,
==
==
之间有什么区别?@lucumt-在这种情况下,没有什么,因为
length
0
都是数字。在一般情况下,如果操作数的类型不相同,
=
将使用类型强制来尝试找到相等,因此(例如)
“==0
为真
=
不会尝试强制,不同类型的操作数永远不会彼此
==
。但是当操作数的类型相同时,
==
===
执行相同的操作。
if (document.querySelectorAll('li:not(.valid)').length === 0) {
    console.log("Your message");
}
if( $('#pswd_info ul li').length == $('#pswd_info ul li.valid').length){
    console.log('all li inside #pswd_info ul has the valid class');
}