Skip to content

Instantly share code, notes, and snippets.

@surferxo3
Last active July 26, 2020 11:40
Show Gist options
  • Save surferxo3/dacee135e376c1f7eeeb248673b50a5b to your computer and use it in GitHub Desktop.
Save surferxo3/dacee135e376c1f7eeeb248673b50a5b to your computer and use it in GitHub Desktop.
Tracking newly added nodes in DOM using MutationObserver API
function observeNewsletterCCT() {
var target = $('.footer-newsletter:last')[0];
var config = {
childList: true,
subtree: true
};
var closeMsgBtn = '[data-action="close-message"]:first';
var headerLogo = $('.header-logo');
$.fn.observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var newNodes = mutation.addedNodes;
if (newNodes.length) {
var $nodes = $(newNodes);
$nodes.each(function() {
var $node = $(this);
if ($node.data('validation-error')) {
$('.footer-newsletter .newsletter-alert-placeholder:first').empty();
var input = $('.footer-newsletter .fields-group-form-control:first');
input.find('p').remove();
input.append($node);
$.fn.fullpage.fitToSection();
} else if ($node.hasClass('global-views-message-warning') ||
$node.hasClass('global-views-message-success')) {
$('.footer-newsletter .fields-group-form-control p:first').remove();
$('.footer-newsletter .newsletter-alert-placeholder:first').empty().append($node);
$.fn.fullpage.fitToSection();
}
});
}
});
});
$.fn.observer.observe(target, config);
$('body').on('click', closeMsgBtn, function () {
setTimeout(function() {
$.fn.fullpage.fitToSection();
}, 1);
});
headerLogo.click(function() {
$.fn.fullpage.moveTo(1, 0);
return false;
});
Backbone.history.once('route', function(router, name, args) {
$('body').off('click', closeMsgBtn);
headerLogo.off('click');
$.fn.observer.disconnect();
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment