假设我有这个HTML元素
<div id="hello" class="hello option john">Hello</div>
<div id="hello" class="hello john">Hello</div>
现在我想通过JavaScript选择一个元素,使用它的Id。如何用纯JavaScript实现相当于if($('hello').hasClass('option')){//do stuff}
(jQuery)的功能?
假设我有这个HTML元素
<div id="hello" class="hello option john">Hello</div>
<div id="hello" class="hello john">Hello</div>
现在我想通过JavaScript选择一个元素,使用它的Id。如何用纯JavaScript实现相当于if($('hello').hasClass('option')){//do stuff}
(jQuery)的功能?
if(document.getElementById("hello").className.split(" ").indexOf("option") > -1);
就这样就可以了。
或者作为一个原型函数:
HTMLElement.prototype.hasClass = function(c){
return this.className.split(" ").indexOf(c) > -1
}
而且document.getElementById("hello").hasClass("option")
在现代浏览器中,包括IE 10,您可以编写以下代码:
document.getElementById("hello").classList.contains("option")
请参考资料:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/classList
在所有主流浏览器中都得到支持(参考:http://caniuse.com/#search=classlist)
el.classList.contains(className);
解决方案,正如 http://youmightnotneedjquery.com/ 所建议的那样? - AlexStack看起来很简单:
var elHasClass = function(element, classToTest) {
var pattern = new RegExp("(^| )" + classToTest + "( |$)");
return pattern.test(element.className) ? true : false;
};
现在你可以做:
if( elHasClass(myEl, 'someCssClass') ) { ... do you stuff here ... }
如果你的目标是现代浏览器,你可以使用 querySelector()。 否则,你可以玩弄 className 属性。 ;)
.classList
。 - Neil