Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поймать событие изменения data-* (https://javascript.ru/forum/events/58993-pojjmat-sobytie-izmeneniya-data-%2A.html)

dmsuslov 21.10.2015 14:24

Поймать событие изменения data-*
 
Привет всем!

Возникает ли какое-то событие при изменении атрибута DOM-элемента data? .change() , как я понял, не срабатывает.

Т.е.: если где-то выполняется $('#some_selector').data('id', 'some_value'), то можно ли повесить обработчик на событие изменения .data('id')?

ksa 21.10.2015 14:27

dmsuslov, нет событий по изменению свойств или атрибутов элементов... :no:

рони 21.10.2015 14:36

Цитата:

Сообщение от dmsuslov
Т.е.: если где-то

найти это и поставить после тригер

dmsuslov 21.10.2015 15:15

Не так изящно получается... Действительно, видимо придется "вручную" генерировать событие :-)

Спасибо ответившим!

Vlasenko Fedor 21.10.2015 21:07

<body>
  <input type="button" id="test_value" data-id="off" value="Click Me">
    <script>
		window.onload = function(){
			var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
			var observer = new MutationObserver(function(mutations){
				 mutations.forEach(function(mutation){
					console.dir(mutation)
					alert(mutation.attributeName + ' Value: ' + target.getAttribute(mutation.attributeName));
				 });
			});
			
			var target = document.getElementById('test_value');
			observer.observe(target, {attributes: true});
			target.addEventListener('click', function(){
				this.dataset.id = 'on';
			});
		}
    </script>
  </body>

вариант использования Observer, думаю, что еще через гетеры сеттеры можно реализовать


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