jQuery如何检查类名是否包含某个值

6
我想读取一个特定元素中附加的类名,并根据类名是否包含某个值(“active”)采取行动。类似于class="bla-bla-bla first active"。最好的方法是什么?
3个回答

27

类名之间用空格分隔,因此您只需使用$(something).hasClass('active')

此外,您可以使用.is()方法,如下所示:$(somthing).is('.active'),它返回truefalse

最后,您可能最好将其用作选择器,像这样:$('li.active').doSomething()


6

您可以直接使用 .is 函数。例如,如果您有一个 div <div id="divid" class="bla-bla-bla first active" />,您可以使用:

if ($('#divid').is('.active')) { alert('Its active!'); }

这种方法适用于任何 jQuery 选择器语法,这意味着您可以进行一些相当深入的检查,超出了仅仅检查 CSS 类。有关更多信息,请参见 jQuery 文档


0
如果您正在寻找一个或多个元素中特定类的元素,则可以使用以下代码:
if(element.classList.contains("myStyle")){
// works for one or more class names
// if "myStyle" is one of the classnames present
// then run your code here
alert("This one has the class myStyle!";
}

但是,如果您正在寻找特定的文本,比如某个类名中的子字符串,那么您可以考虑以下内容。我的情况是,我需要的div的类包含较大类名中的部分字符串,例如“answer--anYKw3yE”。如果它包含单词“answer”,那么我知道它具有我需要的数据。但是类的其余字符是由JavaScript生成的,并且每次页面刷新时都会更改。因此,我通过标记名称收集所有元素,然后循环遍历该集合,查找类名中的子字符串。当它在任何元素的任何类名中找到子字符串时,我就知道我需要该元素的innertext。

var tablas = document.getElementsByTagName("table")[0].getElementsByTagName("tr")
if(tablas.className.includes("answer")){
// this tr does have a classname with the substring
// 'answer' in at least one of it's classnames.
alert("Wowsie woo woo!");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接