📅  最后修改于: 2023-12-03 14:53:09.520000             🧑  作者: Mango
想要查找页面中是否所有的元素都包含相同的类,我们可以使用 JavaScript 中的 DOM 操作来实现。以下是一些实现方式:
querySelectorAll()
方法const elements = document.querySelectorAll('*');
const classList = [];
for (let el of elements) {
if (el.classList.length > 0) {
classList.push(el.classList);
}
}
if (classList.length > 0) {
const first = classList[0];
for (let i = 1; i < classList.length; i++) {
if (first.toString() !== classList[i].toString()) {
console.log('不是所有元素都包含相同的类。');
return false;
}
}
console.log('所有元素都包含相同的类。');
return true;
} else {
console.log('没有元素包含类。');
return false;
}
上面的代码中,我们首先使用 querySelectorAll()
方法来获取页面中的所有元素,然后遍历这些元素,将它们的类添加到一个数组中。最后,我们检查这个数组是否包含多个类数组,如果不是则说明所有元素都包含相同的类。注意,这里我们使用了 toString()
方法是因为 classList
实际上是一个 DOMTokenList
类型的对象,该对象中的元素是类名,我们需要以逗号分隔的字符串的形式来比较它们。
hasClass()
方法如果我们使用了 jQuery 库,那么查找所有元素是否包含相同的类会非常简单,只需要使用 hasClass()
方法即可。以下是一些例子:
// 用于比较所有元素是否包含相同的类
$.fn.allHaveClass = function(className) {
let result = true;
this.each(function() {
if (!$(this).hasClass(className)) {
result = false;
}
});
return result;
};
// 检查所有元素是否都包含 'test' 类
if ($('*').allHaveClass('test')) {
console.log('所有元素都包含 "test" 类。');
} else {
console.log('不是所有元素都包含 "test" 类。');
}
// 检查所有元素是否都包含 'hide' 类
if ($('*').allHaveClass('hide')) {
console.log('所有元素都包含 "hide" 类。');
} else {
console.log('不是所有元素都包含 "hide" 类。');
}
// 检查所有 'img' 元素是否都包含 'border' 类
if ($('img').allHaveClass('border')) {
console.log('所有 img 元素都包含 "border" 类。');
} else {
console.log('不是所有 img 元素都包含 "border" 类。');
}
上面的代码中,我们首先定义了一个名为 allHaveClass()
的 jQuery 插件,用于比较所有元素是否都包含一个特定的类。然后,在实际使用时,我们可以使用 allHaveClass()
方法来检查所有元素是否包含相同的类,或检查特定类型的元素是否包含特定的类。需要注意的是,该方法仅当有元素被选中时才会返回 true
。