使用jquery检查元素中是否存在可能的类数组的最快方法

使用jquery检查元素中是否存在可能的类数组的最快方法,jquery,Jquery,我正在寻找最好的方法来整理它,或者是执行这种方法的最快和最好的方法 我已经读了很多关于stackoverflow的问题,但无法解决这个问题。下面我有一个有效的解决方案,但它似乎过于臃肿,可能有一个更快或更干净的方法来解决这个问题 我试图运行一个函数,但只有在我的body标记中不存在类数组的情况下 请参阅下面的工作代码 // run scroll reveal if none of these ie classes exist in the body tag if (!$('BODY.ie-9,

我正在寻找最好的方法来整理它,或者是执行这种方法的最快和最好的方法

我已经读了很多关于stackoverflow的问题,但无法解决这个问题。下面我有一个有效的解决方案,但它似乎过于臃肿,可能有一个更快或更干净的方法来解决这个问题

我试图运行一个函数,但只有在我的body标记中不存在类数组的情况下

请参阅下面的工作代码

// run scroll reveal if none of these ie classes exist in the body tag
if (!$('BODY.ie-9,BODY.ie-8,BODY.ie-7,BODY.ie-6')[0]) {

  // scroll reveal function
  window.sr = new ScrollReveal({ reset: false });
  sr.reveal('FIGURE', { duration: 300 });

}
似乎我能得到我想要的结果的唯一方法是将
BODY.ie-9,BODY.ie-8,BODY.ie-7,BODY.ie-6作为选择器列出

如果body标记中不存在这些
.ie-
类,那么我想要的结果是运行子函数


如有任何建议,将不胜感激。谢谢

您甚至不需要jQuery:

// run scroll reveal if none of these ie classes exist in the body tag
if (!/(?:^|\s)ie\-[6-9](?:$|\s)/.test(document.body.className)) {
    // ...
}

此解决方案只需检查
上的
class
属性,并使用Regex测试类名是否匹配
ie-{character介于6和9之间,包括}
。它还确保它匹配整个类名(由空格或字符串的开头/结尾填充)。

您甚至不需要jQuery:

// run scroll reveal if none of these ie classes exist in the body tag
if (!/(?:^|\s)ie\-[6-9](?:$|\s)/.test(document.body.className)) {
    // ...
}

此解决方案只需检查
上的
class
属性,并使用Regex测试类名是否匹配
ie-{character介于6和9之间,包括}
。它还确保它与整个类名匹配(由空格或字符串的开头/结尾填充)。

您使用了错误的选择器。例如,使用
.ie-7
就足够了,这难道不意味着它将尝试检查dom中该类的每个元素吗?导致检查花费的时间更长?我并不是说,我只是想从选择器中删除
BODY
。在谷歌搜索“jquery检查元素是否有以开头的类”后,我发现。还有更多类似的。甚至有一个旧的基准,你可以自己运行,看看它今天表现如何@Termius我也看到了,但是如果你看一下图形键,红色是
,蓝色是
,但是他说
。是不是慢了35%。。。?但是图表显示
快吗?你在哪里测试速度?你用错了选择器。例如,使用
.ie-7
就足够了,这难道不意味着它将尝试检查dom中该类的每个元素吗?导致检查花费的时间更长?我并不是说,我只是想从选择器中删除
BODY
。在谷歌搜索“jquery检查元素是否有以开头的类”后,我发现。还有更多类似的。甚至有一个旧的基准,你可以自己运行,看看它今天表现如何@Termius我也看到了,但是如果你看一下图形键,红色是
,蓝色是
,但是他说
。是不是慢了35%。。。?但是图表显示
快吗?你在哪里测试速度?是啊伙计。太好了!Regex的人需要上这个!谢谢你,很抱歉再次打扰你,只是想了解一下你的方法,看看这把小提琴,我实际上也在用同样的方法,但是你如何用纯js瞄准剩余的
DIV
元素?@joshmoto你可以试试类似的方法。请注意,iSorry中不支持这一点,但非常感谢您在这方面的建议,非常有帮助。太好了!Regex的人需要上这个!谢谢你,很抱歉再次打扰你,只是想了解一下你的方法,看看这把小提琴,我实际上也在用同样的方法,但是你如何用纯js瞄准剩余的
DIV
元素?@joshmoto你可以试试类似的方法。请注意,iSorry中不支持这一点,但非常感谢您在这方面的建议,非常有帮助