jQuery offset() возвращает null в Chrome

#jquery #google-chrome #null #offset

#jquery #google-chrome #null #смещение

Вопрос:

У меня есть следующий HTML:

 <div id="menu">
<ul>
    <li><a href="#"><img src="imagenes/user.png" width="32" height="32" alt="My Profile" title=""/></a></li>
    <li><a href="#"><img src="imagenes/photo.png" width="32" height="32" alt="Photo Gallery" title=""/></a></li>
    <li><a href="#"><img src="imagenes/bookmark.png" width="32" height="32" alt="Social Bookmarking Tools" title=""/></a></li>
    <li><a href="#"><img src="imagenes/rss.png" width="32" height="32" alt="RSS" title=""/></a></li>
    <li><a href="#"><img src="imagenes/search.png" width="32" height="32" alt="Search" title=""/></a></li>              
    <li class="selected"><a href="#"><img src="imagenes/setting.png" width="32" height="32" alt="Control Panel" title=""/></a></li>
</ul> 
<div id="box"><div class="head"></div></div></div>
 

И следующий JS-код:

     $(document).ready(function () {
        var style = 'easeOutExpo';
        var default_left = Math.round($('#menu li.selected').offset().left - $('#menu').offset().left);
        var default_top = $('#menu li.selected').height();
                ... 
 

Проблема, с которой я сталкиваюсь, заключается в том, что «$(‘#menu li.selected’).offset()» возвращает null в Chrome. Я получаю это сообщение об ошибке: «Неперехваченная ошибка типа: не удается прочитать свойство ‘left’ от null».
В Firefox 5.0 работает нормально, и я не пробовал в IE.

Спасибо!

Комментарии:

1. $().offset() возвращает только null тогда, когда элемент не существует. Я протестировал ваш код в Chromium 14, и он сработал как по волшебству.

Ответ №1:

Основываясь на вашем HTML-файле выше, <div id="menu"> у него нет закрывающего тега.

Попробуйте добавить еще один </div> в конец вашего HTML.

Комментарии:

1. Я не ставил здесь закрывающий тег, но он есть в моем коде. Спасибо!

2. Хм, ну, я только что протестировал это с Chrome 15 и jQuery 1.6.3, и $('#menu li.selected').offset() у меня все работает нормально.