Выполнение скрипта только один раз в mutationObserver
В моем магазине Shopify на страницах коллекции у меня включена пагинация. Я использую скрипт jquery для изменения текста всех тегов продаж. Сценарий очень хорошо выполняется на первой странице, но когда я перехожу на следующую страницу, я должен вспомнить его и использовать mutationObserver для обнаружения изменений в dom. Наблюдатель мутаций работает хорошо, но когда я добавляю свой скрипт для изменения тегов продаж новых добавленных узлов, он начинает рекурсивно зацикливаться, и страница перестает отвечать на запросы.
Код с наблюдателем мутации:
var targetNode = document.getElementById('gf-grid');
// Options for the observer (which mutations to observe)
var config = { attributes: false, childList: true, subtree: true };
// Callback function to execute when mutations are observed
var callback = function(mutationsList, observer) {
$('.product-inner').each(function () {
var tag = $(this).find('span.sale');
var oldPrice=$(this).find('.price-old').text();
var ac = oldPrice.replace(/[, ]+/g, "").trim();
var sd=parseInt(ac);
var newPrice = $(this).find('.price-new').text();
var az = newPrice.replace(/[, ]+/g, "").trim();
var gz=parseInt(az);
if (!isNaN(sd)){
var vvv = sd - gz;
var nval = vvv / sd;
var percentOff = Math.round(nval * 100);
$(tag).text(percentOff + "%");
}
});
console.log(oldPrice);
observer.disconnect();
};
// Create an observer instance linked to the callback function
var observer = new MutationObserver(callback);
// Start observing the target node for configured mutations
observer.observe(targetNode, config);