У меня есть одностраничный сайт, и я использую следующий код для прокрутки между страницами:
function gotoPage() {
var cur = $(this);
var role = cur.attr('role');
var target = $('#' + role);
$('html,body').animate({
scrollTop: target.offset().top - 94
}, 1000);
}
$('.navBt').click(gotoPage);
HTML:
<div class="navBt" role="topSpacing">
<img src="img/nav_campaign.png" />
</div>
<div class="navBt" role="sectionD">
<img src="img/nav_club.png" />
</div>
Он отлично работает в любом браузере, кроме IE. Когда я открою его в IE9 (не уверен в других версиях), он не будет работать, но как только я нажму F12, чтобы открыть проверку, он начнет нормально работать с этого момента, даже если я обновлю страницу или снова зайду на страницу без проверки открыт.
Есть идеи, почему?
this
? ЭтоgotoPage()
, а не элемент DOM, как вы думаете. Таким образом,$(this)
оборачивает саму функцию, у которой нет атрибутаrole
. Я думаю, что этот код просто не может работать так, как вы хотите. - person Jeremy Thille   schedule 05.03.2015gotoPage
, ваши предположения о значенииthis
бесполезны :) Это может бытьwindow
или узел DOM, еслиgotoPage
используется в качестве обработчика событий, или окружающий объект, или что-то еще, что было установлено через.apply()
,.call()
,.bind()
,.proxy()
,... - stackoverflow.com/questions/3127429/ - person Andreas   schedule 05.03.2015gotoPage : function(){...}
, поэтому он не ссылается на объект, частью которого является. В любом случае, это не элемент DOM. - person Jeremy Thille   schedule 05.03.2015