javascript - 在 anchor 单击时执行 javascript 函数,但代码必须在该 anchor 打开的页面上运行

标签 javascript jquery scroll

这种行为可能吗?我需要点击事件处理程序中的代码,以便在该导航链接打开的新 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/

相关文章:

javascript - FullCalendar - 是否可以更改/添加文本?

javascript - "onscroll"在重绘之后或之前触发?

javascript - 尝试将 Slick Carousel 加载到 Foundation 6.5

javascript - ReactJS - Array.map 和键的不明确行为

javascript - 如何查找选择选项文本开头

javascript - 单击时停止淡入动画并单击时停止淡出动画

javascript - 使用 javascript 从重写的 URL 获取参数

javascript - 富文本编辑器改变风格

html - 溢出-x : hidden do not work

jquery - 无法读取未定义的属性 'top'