我的$(窗口).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循环来控制它们,我的大脑陷入了一个编码事物的循环中,只是关闭了它的内容。也开始了。 目前正在玩的唯一一个是第一个。 是否有更好的方法来查找比赛和比赛/暂停?
答案 0 :(得分:0)
我认为主要问题是你的&#34;这个&#34;不是你想的那样。您应该为每个函数定义一个变量,如下所示:
$('.atmos').each(function(that){
然后使用&#34;那&#34;而不是&#34;这个&#34;在其余的代码中。
顺便说一下:你不需要其他的条件。只是&#34;否则&#34;会好起来的。