#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()
у меня все работает нормально.