jquery – 如何检查元素是否附加了任何类
你会想象这很容易实现,但是很好..
无论如何,我有一个元素,根据网站上的交互添加或删除类。
我可以使用$(element).hasClass("myClass")
轻松检查对象是否具有特定的类
但是如何在不知道其名称的情况下检查元素是否附加了任何类。 就像是:
$("#mydiv").hasAtLeastOneClassPresent { do this } $("#mydiv").hasNotASingleClass { do that }
检查classList
属性:
$("#mydiv").prop('classList').length
或者,使用DOM:
document.querySelector('#mydiv').classList.length
如果长度为零,则它没有类,如果它大于零,则它具有该类的数量。
以DOM为function:
// a named function to take a DOM node: function hasClasses(node) { // returns a Boolean, true if the length // of the Array-like Element.classList is // greater than 0, false otherwise: return node.classList.length > 0; } var elem = document.getElementById('mydiv'); if (hasClasses(elem)) { elem.classList.add('found'); }
function hasClasses(node) { return node.classList.length > 0; } var elem1 = document.getElementById('mydiv'), elem2 = document.getElementById('myotherdiv'); if (hasClasses(elem1)) { elem1.classList.add('found'); } if (hasClasses(elem2)) { elem2.classList.add('found'); }
div { height: 2em; border: 3px solid limegreen; margin-top: 0.5em; border-radius: 1em 0; } .found { border-color: orange; }
在jQuery中:
if($("#mydiv").is('[class]')
正如YoYo在评论中指出的那样,如果属性类为空字符串集,则会失败。 所以不要用它……
在HTML元素上使用classList
属性:
document.getElementById("mydiv").classList.length document.querySelector("#mydiv").classList.length $("#mydiv").prop('classList').length // jQuery method.
classList
给出了元素的类数组。 所以, .length
会说那里有没有课。
请参阅下面的工作代码段:
var elemClasses = $('body').attr('class') ? $('body').attr('class').split(/\s+/) : []; if (elemClasses.length == 1){ alert('Only one class'); } else{ alert('Element has ' + elemClasses.length + ' clases'); }
你不需要jQuery来实现这个目标。
var hasNoClass = !document.getElementById("#id").className; if(hasNoClass){ /*...*/ }else{ /*...*/ }
使用jQuery的方法相同
var hasNoClass = !$("#id").className; if(hasNoClass){ /*...*/ }else{ /*...*/ }
您必须检查class
属性是否:
- 现在但没有课(class =“”)
- 不存在(未定义)
。
// with class attribute but no class // even without class attribute so no class attr = $("#mydiv").attr("class") hasClass = (attr == undefined || attr.replace(/\s+/, '') == "" )
用这个…
var classes = $('#mydiv').attr('class').split(/\s+/);
这将为您提供应用于元素的所有类的数组。 对于长度,您可以简单地将其扩展为
var classes = $('#mydiv').attr('class').split(/\s+/).length;
干杯
你可以做一件事从元素中取出所有类然后计算类,尝试下面的代码: –
var myClass = $("#mydiv").attr("class"); var myClassArray; var myClassCount; if (myClass != "") { myClassArray = myClass.split(" "); myClassCount = myClassArray.length(); } else { myClassCount = 0; } console.log(myClassCount); // Number of class attached to that element
它可能会帮助你。