У меня есть следующий код
<ul id="menu">
<li class="newsPara">
Initial copy here
<a href="#" class="readmore">Read more» </a>
<ul class="accordianUl" style="display: none">
<li>
content hidden here
</li>
</ul>
</li>
</ul>
когда пользователь нажимает на read больше, расширение sub ul расширяется. используя следующий код
$('#menu li a').click(function () {
$('#menu li a').show();
$(this).hide();
var checkElement = $(this).next('ul');
if (checkElement.is(':visible')) {
return false;
}
if (!checkElement.is(':visible')) {
$('#menu ul:visible').slideUp('normal');
checkElement.slideDown('normal');
$('html, body').animate({ scrollTop: $(this).parent('.accordianUl').position().top }, 'slow');
return false;
}
});
Я хочу, чтобы sub ul расширился, чтобы перейти на вершину.
$('html, body').animate({ scrollTop: $(this).parent('.accordianUl').position().top }, 'slow');
но он, похоже, не работает
может кто-нибудь помочь
благодаря
ваш $(this).parent()
возвращает null, так как он не получил в нем accordianUl. $ (this) относится к текущему элементу, вызывающему функцию, см. эту скрипту:
http://jsfiddle.net/jFIT/wfeWW/
$('#menu li a').click(function () {
$('#menu li a').show();
$(this).hide();
$this = $(this); //KEEP THAT ELEMENT JUST INCASE
console.log($this); //IT IS THE LI > A
var checkElement = $(this).next('ul');
if (checkElement.is(':visible')) {
return false;
}
if (!checkElement.is(':visible')) {
$('#menu ul:visible').slideUp('normal');
checkElement.slideDown('normal');
$('html, body').animate({ scrollTop: checkElement.position().top }, 'slow');
return false;
}
});