Я пытаюсь получить высоту, ширину и расположение фрагмента HTML-кода, чтобы я мог создать <div>
с position: absolute
для наложения соответствующего HTML-кода. Иногда этот HTML представляет собой отдельный элемент, а иногда - набор элементов.
Я пытался обернуть соответствующий HTML-код в <span>
, а затем использовать $('#spanToMeasure').height()
и .width()
и .offset()
, но я получаю противоречивые результаты. Иногда высота и / или ширина возвращаются как 0, тогда как на самом деле это не так, а иногда размещение отключено.
Я также пытался использовать $(window).load()
вместо $(document).ready()
, но результаты выглядят одинаково.
Мой метод не работает из-за CSS, который изменяет размеры / размещение? Или что-то еще происходит? Любая помощь приветствуется!
Вот мой полный код:
$(document).ready(function() {
// Create a container to hold all of the overlays.
var $overlayContainer = $('<div id="easy_edit_overlays">').appendTo('body');
// Find all of the sections of code to create overlays for.
$('span.easy_edit').each(function() {
var $this = $(this);
$this.removeClass('easy_edit');
var height = $this.height();
var width = $this.width();
var offset = $this.offset();
// Create overlay.
var $editOverlay = $('<div>').addClass('easy_edit_overlay')
.height(height)
.width(width)
.css('background-color', 'red')
.css('opacity', '0.5')
.css('top', offset.top)
.css('left', offset.left)
.css('position', 'absolute');
// Create link to include within overlay.
var $editLink = $('<a>').attr('href', $this.attr('class'))
.attr('target', '_blank')
.css('display', 'block')
.css('height', height)
.css('color', 'red')
.text('Edit');
$editLink.appendTo($editOverlay);
$editOverlay.appendTo($overlayContainer);
// Remove the <span> tag and replace with its children.
$this.replaceWith($this.html());
});
});