【问题标题】:check if page at a certain section检查页面是否在某个部分
【发布时间】:2015-07-21 03:01:06
【问题描述】:

当用户位于具有特定 ID 的页面部分时(通过链接或滚动),我想触发一个函数。这是我现在拥有的,但它不起作用。

$(document).ready(function() {
    if (window.location.pathname == '/index.html#contact') {
        console.log('Viewing contact form');
    }
});

更新:找到我要找的东西。这是我用的:

$(window).bind('scroll', function() {
    if($(window).scrollTop() >= $('#contact').offset().top - 50) {
        $('.modal').modal('hide');
    }
});

“- 50”是为了说明我的边距和填充。使用减法符号时,它“假定”您的部分在页面上开始较高。对于较低的,使用加法。
“$('.modal').modal('hide');”不需要。这是为了在用户位于页面的#contact 部分时隐藏引导模式。

【问题讨论】:

  • @Katerina:不,似乎不是。该问题询问如何知道用户何时滚动到给定元素的底部,而这个问题想知道 - 据我所知 - 给定元素何时在页面上可见,以及如何记录或以其他方式根据该信息采取行动。
  • 是一样的,看:如果用户看到元素,他已经滚动到它)唯一的区别——你应该在用户第一次滚动之前在页面加载上检查这个

标签: javascript jquery


【解决方案1】:

Javascript 中的window.location 属性返回一个位置对象。如果要匹配特定的锚链接,则需要使用位置对象的 hash 属性。以下是位置对象的所有属性的列表:http://www.w3schools.com/jsref/obj_location.asp

你可以检查window.location.pathname+window.location.hash

$(document).ready(function() {
    if (window.location.pathname+window.location.hash == '/index.html#contact') {
        console.log('Viewing contact form');
    }
});

因为window.location.pathname 不包括哈希后的部分。

【讨论】:

  • 很好的修复。我用我正在使用的内容更新了帖子,但你的也同样有效
【解决方案2】:

您的 HTML 代码

<div id="contact">

</div>

您的 Javascript 代码

 $("#contact").scroll(function() {
/*do whatever you want*/
    });

【讨论】:

  • 我认为这是 OP 需要帮助的“whatever [he want]”部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多