UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

64 lines (53 loc) 1.78 kB
"use strict"; var ko = require("knockout"), compareVersion = require("../../core/utils/version").compare, strategyChanging = require("../../core/element_data").strategyChanging; var patchCleanData = function patchCleanData(jQuery) { var cleanKoData = function cleanKoData(element, andSelf) { var cleanNode = function cleanNode() { ko.cleanNode(this); }; if (andSelf) { element.each(cleanNode); } else { element.find("*").each(cleanNode); } }; var originalEmpty = jQuery.fn.empty; jQuery.fn.empty = function () { cleanKoData(this, false); return originalEmpty.apply(this, arguments); }; var originalRemove = jQuery.fn.remove; jQuery.fn.remove = function (selector, keepData) { if (!keepData) { var subject = this; if (selector) { subject = subject.filter(selector); } cleanKoData(subject, true); } return originalRemove.call(this, selector, keepData); }; var originalHtml = jQuery.fn.html; jQuery.fn.html = function (value) { if (typeof value === "string") { cleanKoData(this, false); } return originalHtml.apply(this, arguments); }; var originalReplaceWith = jQuery.fn.replaceWith; jQuery.fn.replaceWith = function () { var result = originalReplaceWith.apply(this, arguments); if (!this.parent().length) { cleanKoData(this, true); } return result; }; }; strategyChanging.add(function (strategy) { var isJQuery = !!strategy.fn; if (isJQuery && compareVersion(strategy.fn.jquery, [2, 0]) < 0) { patchCleanData(strategy); } });