jQuery each遍历选择器检查类是否存在的正确语法是什么?
正确实现方案
筛选指定ID表单下无.encrypted类的textarea,有两种常用的正确写法:
写法1:选择器一步筛选(性能更优)
直接把筛选条件写在jQuery选择器里,一步拿到目标元素:
$("#" + formID + " textarea:not(.encrypted)").each(function() { // 此处写你要执行的业务逻辑 });
如果你用ES6模板字符串,写法更简洁:
$(`#${formID} textarea:not(.encrypted)`).each(function() { // 此处写你要执行的业务逻辑 });
写法2:遍历后判断(可读性更高)
如果需要更清晰的逻辑分支,可以先拿所有textarea,再判断类是否存在:
$(`#${formID} textarea`).each(function() { // 元素没有encrypted类时才执行逻辑 if (!$(this).hasClass('encrypted')) { // 此处写你要执行的业务逻辑 } })
原有代码错误说明
你之前的写法不生效主要有两个问题:
:not伪类选择器的语法错误,:not()括号内需要直接填写要排除的CSS选择器,不能调用jQuery的hasClass方法- 选择器拼接逻辑混乱,不需要拆分文本选择器和表单ID,直接拼接成完整选择器即可
额外注意:你原有代码里写的类名是
encypted(缺了字母r),如果你的实际类名是encrypted记得修正拼写,否则筛选会完全失效。
内容的提问来源于stack exchange,提问作者Regual
相关产品推荐
相关产品推荐

