Как всегда удалить встроенный стиль для конкретного элемента?

Как всегда удалить встроенный стиль для конкретного элемента?

Я использую этот код для удаления моего стиля:

jQuery('.myelement').removeAttr('style');

но это не работает, вероятно, потому что другой код JS добавляет встроенный стиль после меня код, чтобы удалить его. После вызова моего файла нет файла.js.

Я знаю, что могу редактировать файл.js из плагина фото, но если я обновлю плагин, я потеряю свои изменения.

Как я могу написать в jQuery что-то, чтобы сказать, что этот элемент никогда не будет иметь встроенный стиль?

1 ответ

Чтобы убедиться, что стиль элементов всегда пуст, даже если какой-то другой код выполняется после вашего, вы можете использовать наблюдатель мутации для сброса стиля при каждом изменении атрибута стиля узла, например

let element = document.querySelector(".myelement");

let observer = new MutationObserver((m) => {
  if (element.style.length > 0) {
    element.style = {};
  }
});

observer.observe(element, {
  attributes: true,
  attributeFilter: ["style"]
});


// now this wont do anything
element.style.backgroundColor = "red";
<div class="myelement">
  unicorn
</div>

Другие вопросы по тегам