offset() элемента после добавления другого элемента
У меня проблема с jQuerys offset()
у меня есть немного <img>
в документе. Когда документ готов, я оборачиваю это изображение в div и добавляю текст. Тогда мне нужно смещение изображения.
Как я могу получить смещение изображения ПОСЛЕ предварительного выполнения?
Вот пример кода:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<title>Image Offset Problem!?</title>
<script type="text/javascript">
$(document).ready( function(){
$img = $('#demoimg');
// I hope this has nothing to do with it... it's just too big
$img.width(800);
var $prependDiv = $('<div>Some text</div>');
var $wrap = $img.wrap('<div id="wrapper">').parent();
//$wrap.prepend($prependDiv);
// Here I need to use the FINAL offset, the one with the value that shows when we click the button.
// Instead, I get something else!
var imgOffset = $img.offset();
console.log('offset().top = ' + imgOffset.top);
});
</script>
</head>
<body>
<img id="demoimg" src="demoimg.jpg" />
<input type="button" value="View image offset().top" onclick="calculateOffset()" />
</body>
<script type="text/javascript">
function calculateOffset() {
console.log('offset().top = ' + $('#demoimg').offset().top);
};
</script>
Мне нужно получить доступ к offset()
. Топ прямо в $(document).ready()
функция.
Есть ли способ сделать это? Благодарю.
1 ответ
Я думаю, что вам нужно переопределить $img
после упаковки с помощью .wrap()
, так как ссылка на дом изменилась.
Попробуйте выбрать элемент следующим образом:
var imgOffset = $('#demoimg').offset();
Или переопределить $img
после использования .wrap()
:
...
$img = $('#demoimg');
var imgOffset = $img.offset();
...