offset () элемента после добавления другого элемента - PullRequest
1 голос
/ 24 ноября 2011

У меня проблема с 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() .top прямо в функции $(document).ready().

Есть ли способ сделать это?Спасибо.

1 Ответ

0 голосов
/ 24 ноября 2011

Я думаю, вам нужно переопределить $img после переноса, используя .wrap(), так как ссылка на dom изменилась.

Попробуйте выбрать элемент следующим образом:

var imgOffset = $('#demoimg').offset();

Или переопределить $img после использования .wrap():

...
$img = $('#demoimg');
var imgOffset = $img.offset();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...