为什么代码没有应用于页面中的每个元素
Why is code not applied to each element with in page
$(window).scroll(function() {
var scrollwin = $(window).scrollTop();
var windowWidth = $(window).width();
$('article').each( function(i) {
var articleheight = $('article').outerHeight(true);
if(scrollwin >= $(this).offset().top){
if(scrollwin <= ($(this).offset().top + articleheight)){
$('.progress').css('width', ((scrollwin - $(this).offset().top) / articleheight) * 100 + "%" );
}else{
$('.progress').css('width',"100%");
}
}
});
});
.progress {
height: 5px;
background-color: red;
width: 0px;
z-index: 1000;
position: fixed;
top: 0px;
left: 0;
}
body {
height:4000px;
}
article{
background-color: lightgray;
}
h2 {
text-style:bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="progress"></div>
<header>Header content <br>
header content<p>Header content<br>
header content<p>Header content<br>
header content<p></header>
<article>
<div class="article-1">
<h1>Begin Article 1 </h1>
<p>
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
</p>
</div>
</article>
<article>
<div class="article-2">
<h1>Begin Article 2 </h1>
<p>
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
</p>
</div>
</article>
<article>
<div class="article-3">
<h1>Begin Article 3 </h1>
<p>
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
article content<br />article content<br />
</P>
</div>
</article>
<footer> <h1>Footer</h1>
<div class="footer">
<h4>Footer content</h4>
<h4>Footer content</h4>
<h4>Footer content</h4>
<h4>Footer content</h4>
<h4>Footer content</h4>
</div> </footer>
我想在一个页面中为每篇文章生成一个进度条,但是为什么这段代码不能处理页面中的每个文章元素。。。它只适用于第一个元素,但不适用于以下元素,其中进度div立即为100%?
$(window).scroll(function() {
$('article').each( function(i){
var scrollwin = $(window).scrollTop();
var articleheight = $('article').outerHeight(true);
var windowWidth = $(window).width();
if(scrollwin >= $('article').offset().top){
if(scrollwin <= ($('article').offset().top + articleheight)){
$('.progress').css('width', ((scrollwin - $('article').offset().top) / articleheight) * 100 + "%" );
}else{
$('.progress').css('width',"100%");
}
}else{
$('.progress').css('width',"0px");
}
});
});
页面中有几篇文章。
您需要在循环中使用$(this)
而不是$('article')
——我已经进行了以下替换:
$(window).scroll( function() {
$('article').each( function(i) {
var scrollwin = $(window).scrollTop();
var articleheight = $('article').outerHeight(true);
var windowWidth = $(window).width();
if(scrollwin >= $(this).offset().top)
{
if(scrollwin <= ($(this).offset().top + articleheight)){
$('.progress').css('width', ((scrollwin - $(this).offset().top) / articleheight) * 100 + "%" );
}
else {
$('.progress').css('width',"100%");
}
}
else {
$('.progress').css('width',"0px");
}
});
});
在您的代码中,您使用的是$('article')
而不是$(this)
,后者只是选择页面上的第一个article
。使用this
将确保您只引用当前处于each
循环中的article
相关文章:
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 访问代码生成的输入元素上的keyup事件
- HTML 标记未在 AngularJS ckEditor 中应用,而是在 Ediator 中显示 HTML 元素标记代码
- 使用javascript代码将HTML元素复制到剪贴板
- 制作 JavaScript 代码适用于任何元素
- 如何获取dom元素的代码行号
- 如何停止“;固定的“;元素,使用以下代码
- jQuery和AJAX对元素的调用有JavaScript代码
- 用于修改文档元素的 PHP 代码
- 如何在样式元素中获取 CSS 代码
- 为什么谷歌跟踪代码管理器不能安装在正文下的另一个HTML元素中
- findout js代码遍历DOM中的哪个元素
- 什么'这段用javascript移动css元素的代码错了
- 用于查找JS代码中引用的DOM元素的工具
- 如果我只想从数组中打印任何一个元素.任何数组.那么代码会是什么
- jQuery没有为具有新id的新元素执行代码
- 重用用于淡入淡出元素的代码,这样我就不会'我不必重复我的代码
- JavaScript:删除一部分代码,并在单击时删除一个元素
- 使用美丽汤获取“视图元素”代码,而不是“查看源代码”代码
- 从另外两个元素创建一个jquery元素(代码解释请求)