【问题标题】:Detect when all options of a select have changed检测选择的所有选项何时更改
【发布时间】:2022-01-18 17:33:39
【问题描述】:

有没有办法检测选择中所有选项的属性何时发生变化? 例如

<select id="languages">
    <option value="en">English<option>
    <option value="fr">French<option>
    <option value="de">German<option>
    ...
</select>

并且第三方插件会添加(第一次)或更改(第二次+时间)lang属性,所以它会变成:

<select id="languages">
    <option value="en" lang="fr">Anglais<option>
    <option value="fr" lang="fr">Français<option>
    <option value="de" lang="fr">Allemand<option>
    ...
</select>

所以我想观察/检测所有选项的属性何时发生变化,这样我就可以调用我的函数。我认为mutationobserver 可以,但我无法让它发挥作用。

【问题讨论】:

  • 那不是&lt;option value="en" lang="fr"&gt;Anglais&lt;option&gt;&lt;option value="fr" lang="fr"&gt;Français&lt;option&gt;&lt;option value="de" lang="fr"&gt;Allemand&lt;option&gt; 吗?
  • 是的,它会是,但我唯一可以检查的是 lang 属性,所以它并不重要。

标签: javascript jquery mutation-observers


【解决方案1】:

我只是想通了,如果将来有人需要它:

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        console.log('Do your thing');
    });
});

var observerConfig = { 
    attributes: true,
    attributeFilter: ['lang'],
    subtree: true
};

var target = document.querySelector('.languages');

observer.observe(target, observerConfig);

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2021-08-24
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多