返回

浏览器版本不统一?无需担心,自己动手实现HasClass!

前端

作为一名技术博客创作专家,我来和大家聊聊使用JavaScript判断元素中是否含有某个样式的问题。

在前端开发中,我们经常需要判断元素中是否含有某个样式,以便做出相应的操作。例如,我们可以通过判断元素中是否含有active类名来决定是否给它添加display: none样式。

Element.classList.contains()方法

在现代浏览器中,我们可以使用element.classList.contains()方法来判断元素中是否含有某个样式。该方法接收一个参数,即要判断的类名。如果元素中含有该类名,则该方法返回true;否则,返回false

const element = document.getElementById('my-element');

if (element.classList.contains('active')) {
  // 元素中含有`active`类名
} else {
  // 元素中不含有`active`类名
}

$(element).hasClass()方法

在jQuery中,我们可以使用$(element).hasClass()方法来判断元素中是否含有某个样式。该方法接收一个参数,即要判断的类名。如果元素中含有该类名,则该方法返回true;否则,返回false

const element = $('#my-element');

if (element.hasClass('active')) {
  // 元素中含有`active`类名
} else {
  // 元素中不含有`active`类名
}

自己实现HasClass()函数

在一些低版本浏览器中,classList无法使用,这时候就需要我们自己实现类似jQuery的hasClass()函数。我们可以通过以下步骤来实现:

  1. 获取元素的className属性。
  2. 将className属性中的空格替换成逗号。
  3. 将className属性中的类名拆分成一个数组。
  4. 遍历类名数组,判断其中是否包含要判断的类名。
  5. 如果包含,则返回true;否则,返回false
function hasClass(element, className) {
  const classNames = element.className.split(' ');
  return classNames.indexOf(className) !== -1;
}

我们可以通过以上三种方法来判断元素中是否含有某个样式。在实际开发中,我们可以根据浏览器的兼容性来选择合适的方法。