这种行为可能吗?我需要点击事件处理程序中的代码,以便在该导航链接打开的新 HTML 页面上执行。
我放了一个小 fiddle 来更好地说明我想要实现的目标。 http://jsfiddle.net/hWEpL/4/
这是用于滚动的 jQuery:
$.fn.scrollView = function () {
return this.each(function () {
$('html, body').animate({
scrollTop: $(this).offset().top
}, 1000);
});
}
$('#link-3').click(function (event) {
event.preventDefault();
$('.section-3').scrollView();
});
假设 fiddle 是主页。单击第 3 部分时,页面滚动到第 3 部分。
现在,假设我们位于第二页(关于),然后单击第 3 部分。我希望打开主页,并将页面滚动到第 3 部分。
问题是,我不希望在打开主页时出现这种行为,只有当有人在其他页面上并单击第 3 节时才需要它
最佳答案
您可以使用Fragment identifiers 。因此,例如在“关于”页面中,您将使用 homepage.htm#section-3
链接到主页,在 homepage.htm 中,您将像已包含的代码一样包含但添加
var hash=location.hash
if(hash){
var el=$('.'+hash.substr(1))
if(el)
el.scrollView();
}
在onLoad中。这里我们使用片段来告诉页面要转到哪个元素。
http://jsfiddle.net/hWEpL/5/ 这是更新后的 jsfiddle(已使用
跟踪模拟哈希位置location.href="#section-3"//模拟命名链接
。不要将其包含在您的代码中
继续前进,也许从语义上讲,您可以使用 ID 而不是类,以便在禁用 javascript 的情况下使用片段的默认行为,但是您必须放置这段代码来实际阻止默认行为(并允许动画发生)如 https://stackoverflow.com/a/3659116/1480215 中所述
setTimeout(function() {
if (location.hash) {
window.scrollTo(0, 0);
}
}, 1);
关于javascript - 在 anchor 单击时执行 javascript 函数,但代码必须在该 anchor 打开的页面上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23595344/