gpt4 book ai didi

javascript - MutationObserver 类更改

转载 作者:行者123 更新时间:2023-12-03 06:50:23 25 4
gpt4 key购买 nike

我正在使用 MutationObserver检测何时将特定类添加到元素。

const observer = new MutationObserver((mutations) => { 
mutations.forEach((mutation) => {
const el = mutation.target;
if ((!mutation.oldValue || !mutation.oldValue.match(/\bis-busy\b/))
&& mutation.target.classList
&& mutation.target.classList.contains('is-busy')){
alert('is-busy class added');
}
});
});

observer.observe(document.querySelector('div'), {
attributes: true,
attributeOldValue: true,
attributeFilter: ['class']
});

我的问题是: 有没有更好的方法来验证这是一个新添加的类? 目前我正在使用正则表达式来检查该类以前不存在并且 classList检查该类现在是否存在。看起来很乱

Fiddle

最佳答案

@sliptype - 您可以通过以下方式进行操作:

const element = document.querySelector('div');
let prevState = element.classList.contains('is-busy');
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
const { target } = mutation;

if (mutation.attributeName === 'class') {
const currentState = mutation.target.classList.contains('is-busy');
if (prevState !== currentState) {
prevState = currentState;
console.log(`'is-busy' class ${currentState ? 'added' : 'removed'}`);
}
}
});
});

关于javascript - MutationObserver 类更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com