检查一个元素是否有一个类与另一个类总是返回true
Checking if an element has one class vs another alway returns true
我试图检查一个元素是否有两个类中的一个。如果没有,那么它应该运行其他函数。我使用||
或运算符,但不管if语句如何,它总是返回true并运行内部功能,这不是我所期望的。我的语法错了吗?
if (!elm.hasClass('report-error') || !elm.hasClass('data-error')) {
// Do something
}
当元素不同时具有两个类时,您的条件将为true,这包括元素既没有类也只有一个类的情况。只有当元素同时具有两个类时,它才会变为false。
您当前具有条件(!A或!B),其逻辑等价于!(A和B)。
当元素不具有这两个类时,听起来您希望它为true。在这种情况下,你想要的是!(A或B),也可以写成(!A AND!B)。
这两种声明都会做你想做的事:
// !(A OR B)
if (!(elm.hasClass('report-error') || elm.hasClass('data-error'))) {
// Has neither class, so do something else
}
或者这个:
// !A AND !B
if (!elm.hasClass('report-error') && !elm.hasClass('data-error')) {
// Has neither class, so do something else
}
您还可以通过检查它是否有一个类或另一个类,并在ELSE语句中处理"两者都没有"的情况来保持它的超级简单(并且更可读):
if (elm.hasClass('report-error') || elm.hasClass('data-error')) {
// Has one class or the other
} else {
// Has neither class, so do something else
}
听起来像是一个逻辑错误-没有X或没有Y。在大多数情况下都是这样。
if (!(elm.hasClass('report-error') || elm.hasClass('data-error'))) {
// Do something
}
这将检查是否有任何类存在,然后将其反转(因此不存在)。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 检查一个元素是否有一个类与另一个类总是返回true
- 在执行另一个异步函数之前,只有当条件为true时,才执行某些异步函数的最佳方法
- 如何停止和if语句如果另一个if语句为true
- 检查函数是否返回 true 以执行另一个函数
- var=true获胜't传递给另一个函数
- 如果为false,拖放会将我带到另一个网站,如果为true,则会重新启动动画
- 如果前一个ajax的结果为true,则调用另一个ajax
- 如果返回的值为true,则加载另一个分部
- 为什么这个“点击禁用=true;this.form.submit();' 在一个按钮上工作,但不能在另一个按钮上工作