Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отслеживание css состояния объекта (https://javascript.ru/forum/events/55423-otslezhivanie-css-sostoyaniya-obekta.html)

Nifler 27.04.2015 10:55

Отслеживание css состояния объекта
 
Задача: при скруле слайдера должны изменяться css соответствующих пунктов меню. Проблемма в отслеживании "активного" слайда. У активного слайда стиль display=block. Как отследить изменение этого стиля? Не хочу ставить отслеживание через каждый небольшой период времени - будет тормозить. И не могу выколупать конкретно тот код, который двигает слайдером.

Вопрос: как отследить любое изменение DOM?

рони 27.04.2015 11:42

Nifler,
нормальный вариант -- искать то что меняет а не следить за изменениями
второй вариант ищите MutationObserver

nondeterminism 27.04.2015 15:30

<html>
<head>

</head>
<body>

<div id="d">foo</div>
<button onclick="d.style.display='block'">show</button>
<button onclick="d.style.display='none'">hide</button>


<script>


observer=new MutationObserver(function(mutations){
 mutations.forEach(function(mutation){console.log(mutation.target)})
})

observer.observe(d, {attributes: true})

</script>
</body>
</html>

nondeterminism 27.04.2015 21:26

Цитата:

Сообщение от рони
нормальный вариант -- искать то что меняет а не следить за изменениями

А чем он нормальный? А если меняется из 100 мест? Вы найдете одно, подумаете, что все решили, и в итоге жидко обделаетесь. Вариант с обсервером наоборот надежней.

рони 27.04.2015 21:40

nondeterminism,

nondeterminism 27.04.2015 21:52

рони,
Если нечего сказать, лучше не лепить отмазы, а просто промолчать, если не хватает воли признать свою ошибку.

MallSerg 28.04.2015 21:05

foo как всегда грозен и ужасен
<iframe src="//coub.com/embed/3raro?muted=false&autostart=true&originalSize=false&hideTopBar=false&startWithHD=false" allowfullscreen="true" frameborder="0" width="640" height="358"></iframe>


Часовой пояс GMT +3, время: 23:32.