javascript - 检查一个元素是否具有一个类与另一个类总是返回 true

标签 javascript jquery

我正在尝试检查一个元素是否具有两个类之一。如果没有,那么它应该运行一些其他功能。我正在使用 || 或运算符,但是无论 if 语句如何,它总是返回 true 并运行内部功能,这不是我所期望的。我的语法错误吗?

if (!elm.hasClass('report-error') || !elm.hasClass('data-error')) {
     // Do something 
}

最佳答案

当元素不具有两个类时,您的条件将为 true,其中包括元素既没有类也没有类或只有其中一个类的情况。仅当元素同时具有两个类时它才会变为 false。

您当前的条件是 (!A OR !B),逻辑上等同于 !(A AND B)。

听起来您希望当元素没有这两个类中的任何一个时它为 true。在这种情况下,您想要的是 !(A OR 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 语句中处理“两者都不是”的情况来保持它 super 简单(并且更具可读性):

if (elm.hasClass('report-error') || elm.hasClass('data-error')) {
    // Has one class or the other
} else {
    // Has neither class, so do something else
}

关于javascript - 检查一个元素是否具有一个类与另一个类总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354170/

相关文章:

javascript - 这个例子中的 Angular *ngFor 究竟是如何工作的?

javascript - ES6 模块导入和依赖管理

javascript - 单击按钮时的 AJAX JSON 数据填充 - 数组问题

jQuery 工具提示 - 如何声明 2 个选项

javascript - 警报 ('some message' ) 是否会对回调函数产生影响 - Javascript

即使点击后退按钮后,Javascript 也会存储 session 值

javascript - 悬停时使Facebook图标变色

jquery 旋钮内部文本显示为两行

jquery - css背景缩放效果淡入淡出

Javascript/Jquery 日期选择器