Только что написал это ... едва проверено. Извините, но я думаю, что это работает.
$.fn.invisiClone = function() {
$.each($(this), function() {
var newTop = $(this).offset().top;
var newLeft = $(this).offset().left;
var newHeight = $(this).outerHeight()
var newWidth = $(this).outerWidth()
var newClass = $(this).attr('class');
var newId = $(this).attr('id');
var newDiv = document.createElement('div');
$(newDiv).attr('class', newClass);
$(newDiv).attr('id', newId);
$(newDiv).css({
position: 'absolute',
top: newTop,
left: newLeft,
height: newHeight,
width: newWidth,
'background-color': 'transparent',
'z-index': 1000
})
$(newDiv).attr('delete','delete')
$(newDiv).html('');
$(newDiv).prependTo('body');
})
}
function killInvisiClones() {
$('*[delete]').remove();
}
Итак, запустите функцию для DOMS, который вы хотите активировать
$('.keepAlive').invisiClone();
Это технически плохая практика, поскольку она дублирует идентификаторы, но, добавляя их к телу, они должны доминировать над ранее существовавшими DOM. Очень важно убить их после того, как вы удалите оверлей, запустив:
killInvisiClones()
Опять же, это не самый технически правильный способ, но он работает относительно универсально.