Skip to content

Instantly share code, notes, and snippets.

@IgorGavrilenko
Last active August 26, 2021 15:13
Show Gist options
  • Save IgorGavrilenko/dfd11a7cad6f3b2046d3607fda27be73 to your computer and use it in GitHub Desktop.
Save IgorGavrilenko/dfd11a7cad6f3b2046d3607fda27be73 to your computer and use it in GitHub Desktop.

Revisions

  1. IgorGavrilenko revised this gist Aug 26, 2021. 1 changed file with 41 additions and 7 deletions.
    48 changes: 41 additions & 7 deletions js обертка элементов
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,45 @@
    // ready (MutationObserver)
    (function(win) {
    'use strict';
    var listeners = [],
    doc = win.document,
    MutationObserver = win.MutationObserver || win.WebKitMutationObserver,
    observer;
    function ready(selector, fn) {
    listeners.push({
    selector: selector,
    fn: fn
    });
    if (!observer) {
    observer = new MutationObserver(check);
    observer.observe(doc.documentElement, {
    childList: true,
    subtree: true
    });
    }
    check();
    }
    function check() {
    for (var i = 0, len = listeners.length, listener, elements; i < len; i++) {
    listener = listeners[i];
    elements = doc.querySelectorAll(listener.selector);
    for (var j = 0, jLen = elements.length, element; j < jLen; j++) {
    element = elements[j];
    if (!element.ready) {
    element.ready = true;
    listener.fn.call(element, element);
    }
    }
    }
    }
    win.ready = ready;
    })(this);
    // wrapFunc
    var wrapFunc = function (param_1, param_2) {
    var el = document.querySelectorAll(param_1);
    for (var i = 0; i < el.length; i++) {
    ready(param_1, function(element) {
    var wrapper = document.createElement('div');
    el[i].parentNode.insertBefore(wrapper, el[i]);
    wrapper.appendChild(el[i]);
    this.parentNode.insertBefore(wrapper, this);
    wrapper.appendChild(this);
    wrapper.classList.add(param_2);
    }
    };
    wrapFunc('.elem', 'class-container');
    });
    };
  2. IgorGavrilenko created this gist Aug 25, 2021.
    11 changes: 11 additions & 0 deletions js обертка элементов
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    // wrapFunc
    var wrapFunc = function (param_1, param_2) {
    var el = document.querySelectorAll(param_1);
    for (var i = 0; i < el.length; i++) {
    var wrapper = document.createElement('div');
    el[i].parentNode.insertBefore(wrapper, el[i]);
    wrapper.appendChild(el[i]);
    wrapper.classList.add(param_2);
    }
    };
    wrapFunc('.elem', 'class-container');