javascript - 在视口(viewport)中运行 JS 函数。

标签 javascript jquery scroll viewport

我在这里找到了如何制作计数器,我将在滚动网站上使用它。

我正在使用以下代码:

$(function() {
    function count($this){
        var current = parseInt($this.html(), 10);
        $this.html(++current);
        if(current !== $this.data('count')){
        setTimeout(function(){count($this)}, 10);
    }   
}
  $("span").each(function() {
  $(this).data('count', parseInt($(this).html(), 10));
  $(this).html('0');
  count($(this));
  });
});

我尝试添加以下代码,但不确定是否正确添加:

      if ($('element').visible(true)) {

}

这是当前在没有 if 语句的情况下运行的 Jfiddle 的链接。任何帮助将不胜感激。

http://jsfiddle.net/WpJxn/257/

最佳答案

这是您应该查看的内容:Check if element is visible after scrolling

这里有一个演示此技术的示例:http://jsfiddle.net/XYS2G/ - 只需尝试滚动结果窗口。

HTML:

<div class="indicators">
    <span class="indicator" data-id="section1">section1</span>
    <span class="indicator" data-id="section2">section2</span>
    <span class="indicator" data-id="section3">section3</span>
    <span class="indicator" data-id="section4">section4</span>
    <span class="indicator" data-id="section5">section5</span>
    <span class="indicator" data-id="section6">section6</span>
</div>
<div class="sections">
    <div class="section" id="section1">section1</div>
    <div class="section" id="section2">section2</div>
    <div class="section" id="section3">section3</div>
    <div class="section" id="section4">section4</div>
    <div class="section" id="section5">section5</div>
    <div class="section" id="section6">section6</div>
</div>

CSS:

.indicators { position: fixed; }
.section { height: 150px; }

JavaScript:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

function refreshIndicators() {
    $('.indicator').each(function () {
        if (isScrolledIntoView($('#' + $(this).attr('data-id')))) {
            $(this).css('color', 'red');
        } else {
            $(this).css('color', 'black');
        }
    });
}

refreshIndicators();

$(window).bind('scroll', refreshIndicators);

关于javascript - 在视口(viewport)中运行 JS 函数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223755/

相关文章:

javascript - 有没有办法在显示之前获取最初具有 display=none 的动态插入/创建的 div 的高度?

javascript - 向上和向下箭头导航在 iframe 内被阻止

java - 向下滚动到页面底部加载 Instagram 图片

javascript - 全局对象内 JavaScript 参数的奇怪行为

javascript - 如何在noty中添加事件onClick以用于jQuery中的通知?

javascript - 在页面加载时使用 Javascript 或 jQuery 删除 div 类

android - 在 Android 中按像素滚动 ListView

javascript - 我无法在 .then() Promise 中返回对象

javascript - 在 .animate 代码运行时单击 '' 时保持图像处于选中状态

javascript - 对象数组的自定义排序顺序