UNPKG

e-lado

Version:

[![CircleCI](https://circleci.com/gh/sharetribe/sharetribe/tree/master.svg?style=svg)](https://circleci.com/gh/sharetribe/sharetribe/tree/master) [![Dependency Status](https://gemnasium.com/sharetribe/sharetribe.png)](https://gemnasium.com/sharetribe/shar

47 lines (46 loc) 1.51 kB
/** * Use relocat() to move HTML elements in the DOM * above a certain window width. * * Copyright by Eike Send, Edenspiekermann AG * * Licensed under the GPLv2 and the MIT license * */ relocate = function(width, elements, destinationElement, desktopFirst) { // ensure that we use an array-like argument, NodeList and HTMLCollection work as well if (elements.nodeName) elements = [elements]; var placeHolders = [], els = [], parentEl, el, i, l = elements.length; // first, create a non-live copy of the elements // this avoids nasty bugs when elements are removed and added again for (i = l-1; i >= 0; i--) { els.push(elements[i]); } var forwardFunction = function() { for (i = 0; i < l; i++) { parentEl = els[i].parentNode; if (placeHolders[i] === undefined) { placeHolders[i] = document.createElement("span"); parentEl.insertBefore(placeHolders[i], els[i]); } el = parentEl.removeChild(els[i]); destinationElement.insertBefore(el, destinationElement.firstChild); } } var backwardFunction = function() { for (i = 0; i < l; i++) { parentEl = els[i].parentNode; el = parentEl.removeChild(els[i]); placeHolders[i].parentNode.insertBefore(el, placeHolders[i]); } } // then create a object that operates on it: if (!desktopFirst) { minwidth(width, forwardFunction, backwardFunction); } else { minwidth(width, backwardFunction, forwardFunction, desktopFirst); } }