Мой код, визуально в любом случае, отлично работает, но я продолжаю получать «Uncaught TypeError: Can not Read свойство« left undefined »в моей консоли. Я понятия не имею, что может вызвать это.jQuery Uncaught TypeError со смещением(). Left
В частности, ошибка появляется на следующем: линии:
var left = $(this).siblings('li.active').offset().left - ($(this).parents('.hoverBar').offset().left + 20);**
Все функции для связи:
$('.hoverBar li').hover(function(){
var left = $(this).offset().left - ($(this).parents('.hoverBar').offset().left + 20);
var width = $(this).width() + "px";
var sictranslate = "translate("+left+"px, 0px)";
$(this).parent('ul').next('div.floatr').css({
"width": width,
"-ms-transform" : sictranslate,
"-webkit-transform": sictranslate,
"-moz-transform": sictranslate,
"transform": sictranslate
});
},
function(){
var left = $(this).siblings('li.active').offset().left - ($(this).parents('.hoverBar').offset().left + 20);**
var width = $(this).siblings('li.active').width() + "px";
var sictranslate = "translate("+left+"px, 0px)";
$(this).parent('ul').next('div.floatr').css({
"width": width,
"-ms-transform" : sictranslate,
"-webkit-transform": sictranslate,
"-moz-transform": sictranslate,
"transform": sictranslate
});
}).click(function(){
$(this).siblings('li').removeClass('active');
$(this).addClass('active');
return false;
});
и некоторые соответствующие HTML:
<nav class="head_nav">
<div class="hoverBar">
<ul id="navbar">
<li class="active"><a href="">About</a>
<ul>
<li><a href="#">Mission</a></li>
<li><a href="#">Board Members</a></li>
<li><a href="#">Staff</a></li>
<li><a href="#">Members</a></li>
<li><a href="#">Task Forces</a></li>
</ul>
</li>
<li><a href="">Events</a>
<ul>
<li><a href="#">Description</a></li>
<li><a href="#">Registration with Outlook ICS</a></li>
<li><a href="#">Online Payment</a></li>
<li><a href="#">Email auto-reminders</a></li>
<li><a href="#">Multiple registrants allowed</a></li>
</ul>
</li>
</ul>
<div class="floatr"></div>
</div>
</nav>
Когда ваш селектор не соответствует никаким элементам, '.offset()' возвращает 'null'. – Bergi
Когда '$ (this) .siblings ('li.active')' не существует (неопределено), его '.offset(). Свойство left' не может быть прочитано (поскольку несуществующие объекты естественно не могут иметь свойства) – Moob
Какую строку конкретно указывает ваша консоль? Вы ищете смещение в нескольких местах. В любом случае, обычно при возникновении этой ошибки часто возникает проблема с областью, и JavaScript не может найти объект, на который вы ищете смещение. Поэтому мое первое предложение было бы для 'console.log ($ (this));' и убедитесь, что это то, что вы ожидаете от него. –