首页 > 解决方案 > 如果元素有类,则添加类,如果没有,则删除

问题描述

当元素具有“活动”类(由引导导航功能分配)时,我需要向元素添加一个类,并在引导程序删除该类时删除该类

我认为这样的事情会起作用,但它没有

if ($(".tree-parent > .tab-pane").hasClass("active")) {
    $(this).addClass("d-flex");
}
else {
    $(this).removeClass("d-flex");
}

编辑:正如我收到的一些评论中所建议的那样,问题在于脚本仅在页面加载时运行,而不是在实际添加/删除“活动”类时运行。谢谢

标签: jquery

解决方案


这应该做。

$(function ($) {
  const $el = $('.tree-parent > .tab-pane');

  var mutationObserver = new MutationObserver(function(mutations) {
    if ($el.hasClass('active')) {
      $el.addClass('d-flex');
    } else {
      $el.removeClass('d-flex');
    }
  });

  mutationObserver.observe($el[0], {
    attributes: true
  });
});

不要忘记检查是否选择了正确的元素。


推荐阅读