У меня есть записи которые я подгружает через ajax. То есть обработать их через js напрямую не получится (например добавить в закладки. или посмотреть видео обзор в popup), так как я мутировал изначально предопределенный DOM узел. По этому я начал его прослушивать через mutation observer(не особо понимаю как его использовать). Проблема в том что когда подгрузились например 10 записей, я мутировал DOM 10 раз, а значит и callback передаться 10 раз (один клик сработает 10 раз). Как мне передать только 1 callback после всех изминение dom?
jQuery(document).ready(function($){
let observersmart = new MutationObserver(mutations=> {
smartmutat();
});
observersmart.observe(smartthink, {
childList: true,
subtree: true,
characterDataOldValue: true
});
smartmutat();
function smartmutat(){
var fclear, bclear;
$("#smartthink .td-module-container").hover( hoverVideo, hideVideo );
$("#smartthink .td-module-container").hover(function(){
var videolink2 = $(this).find('#metavalll').attr('data-popup-video');
if(videolink2!==''){
bclear = setTimeout(function() {
$(this).find('video').css('opacity', '1');
$(this).find('.entry-thumb').addClass('enttry-active');
$('video', this).get(0).play();
}.bind(this), 200);
fclear = setTimeout(function(){
$(this).find('video').css('opacity', '0');
$(this).find('.entry-thumb').removeClass('enttry-active');
}.bind(this), 2800);
}
},function(){
$(this).find('.entry-thumb').removeClass('enttry-active');
$(this).find('video').css('opacity', '0');
clearTimeout(fclear);
});
function hoverVideo(e) {
$('video', this).get(0).load();
}
function hideVideo(e) {
clearTimeout(bclear);
$('video', this).get(0).pause();
}
$('#smartthink .td-module-container').click(function() {
console.log('check');
var videolink = $(this).find('#metavalll').attr('data-popup-video');
if(videolink!==''){
$(this).lightGallery({
youtubePlayerParams: {
autoplay: 1,
controls: 1
},
dynamic: true,
dynamicEl: [{"src": videolink}]
});
}
});
}
});