滚动功能无法查看整页

时间:2014-08-08 18:50:14

标签: javascript audio triggers scroll

我的$(窗口).on(' scroll',function(){}有一些问题 我的代码只看到页面上的第一个触发器。

在网站上有音频触发器,当在屏幕上时,需要打开音轨,同时关闭前一个音轨。整个页面中的触发器都是这样的:

<audio class="atmos" id="pubAtmos" controls><source src="audio/pubAtmos.mp3" type="audio/mp3"></audio>

滚动功能的代码是:

function isScrolledIntoView(elem) 
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
return ((elemTop <= docViewBottom) && (elemTop >= docViewTop));
}


$(window).on('scroll', function () {
    $('.atmos').each(function(){
        if (isScrolledIntoView(this)) {
            for (i=0 ; i < atmosArray.length ; i++){
                if (this.id == atmosArray[i].id) {
                    this.play();
                }
                else if (this.id != atmosArray[i].id) {
                    atmosArray[i].paused();
                }
            }
        }
    }
)});

所有的音频ID都与atmosArray id相关,所以我可以用for循环来控制它们,我的大脑陷入了一个编码事物的循环中,只是关闭了它的内容。也开始了。 目前正在玩的唯一一个是第一个。 是否有更好的方法来查找比赛和比赛/暂停?

1 个答案:

答案 0 :(得分:0)

我认为主要问题是你的&#34;这个&#34;不是你想的那样。您应该为每个函数定义一个变量,如下所示:

$('.atmos').each(function(that){

然后使用&#34;那&#34;而不是&#34;这个&#34;在其余的代码中。

顺便说一下:你不需要其他的条件。只是&#34;否则&#34;会好起来的。