Jquery语句崩溃
Jquery Statements Crashing
当目标值为true时,我使用jquery来制作数字动画。但当值为true甚至为false时,我的导航jquery-else语句代码会因为某种原因停止工作,我不知道为什么。我想我在这两个语句中都使用了"offset"。
我的html动画数字
<div class="container" id="counter">
<div class="row text-center">
<div class="col-lg-12">
<h3 class="dark-blue">SOME FACTS ABOUT US WHAT WE ARE</h3>
</div>
<div class="col-lg-12 top-spacing">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu tellus a nulla rhoncus imperdiet.<br/> Vestibulum quis dictum leo.Curabitur viverra sagittis velit non fringilla. Etiam sed fringilla risus, vel dapibus nisi.</p>
</div>
</div>
<div class="row text-center content top-spacing">
<div class="col-lg-3">
<i class="fa fa-bicycle fa-5x color-red"></i>
<h3 id="bike" class="countdown">0</h3>
<h3 class="blog-item">Km ride bike</h3>
</div>
<div class="col-lg-3">
<i class="fa fa-coffee fa-5x color-red"></i>
<h3 id="coffee" class="countdown">0</h3>
<h3 class="blog-item">Cups of coffee</h3>
</div>
<div class="col-lg-3">
<i class="fa fa-line-chart fa-5x color-red"></i>
<h3 id="projects" class="countdown">0</h3>
<h3 class="blog-item">Projects Completed</h3>
</div>
<div class="col-lg-3">
<i class="fa fa-user fa-5x color-red"></i>
<h3 id="users" class="countdown">0</h3>
<h3 class="blog-item">Users Satisfied</h3>
</div>
</div><br/><br/><br/>
</div>
动画数字的Js
var target = $("#counter").offset().top-$(window).height();
$(document).on('scroll', function() {
if ($(window).scrollTop() > target) {
$('#bike').animateNumber({ number: 165 },5000);
$('#coffee').animateNumber({ number: 2165 },5000);
$('#projects').animateNumber({ number: 385 },5000);
$('#users').animateNumber({ number: 315 },5000);
$(this).off('scroll');
}
});
我的导航html
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand-font-size navbar-brand" href="#">Aston</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">About</a></li>
<li><a href="#">Projects</a></li>
<li><a href="#">Clients</a></li>
<li><a href="#">Team</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
Jquery 的CSS
.navbar-default.scrolled{
background-color: #fff;
border-bottom: 1px solid #BBB9BE;
box-shadow: 0,0,2px,#BBB9BE;
}
.navbar-default {
background-color: transparent;
border:none;
-webkit-transition: background-color 700ms linear;
-moz-transition: background-color 700ms linear;
-o-transition: background-color 700ms linear;
-ms-transition: background-color 700ms linear;
transition: background-color 700ms linear;
}
导航的JS
var a = $(".navbar-default").offset().top;
$(document).scroll(function() {
if ($(this).scrollTop() > 10) {
$('.navbar-default').addClass("scrolled");
$(".navbar-default .navbar-brand").css({
"color": "#3F4474"
});
$(".navbar-default .navbar-toggle .icon-bar").css({
"background-color": "#3F4474"
});
}
else {
$('.navbar-default').removeClass("scrolled");
$(".navbar-default .navbar-brand").css({
"color": "#fff"
});
$(".navbar-default .navbar-toggle .icon-bar").css({
"background-color": "#fff"
});
}
});
我只是想让导航回到它的原始位置,背景颜色是透明的。谢谢你的帮助!
您的问题是,与animateNumber()
相关的当前代码依赖于$(this).off('scroll');
来阻止数字的动画无限期地进行。您可能不明白$(this).off('scroll');
是如何做到这一点的。
它通过在第一次调用代码后删除scroll
处理程序来防止animateNumber()
被反复调用。不幸的是,$(this).off('scroll');
删除了所有绑定到document
的scroll
处理程序,包括修改导航栏的css
的处理程序
至少有两种方法可以解决此问题
- 页面加载时不要绑定第二个处理程序,而是将第二个处理器放在函数中,并在删除第一个处理程序后调用它来绑定处理程序,如下jsfiddle所示
- 或者(我喜欢的方法)将所有代码放在一个
scroll
函数中,并使用一个变量和一个if语句来防止animateNumber()
的无限循环,如jsfiddle所示
这是第二种方法的jQuery:
var a = $(".navbar-default").offset().top;
var target = $("#counter").offset().top - $(window).height();
var hasAnimated = false; // add this var
$(document).on('scroll', function() {
if ($(window).scrollTop() > target && !hasAnimated) { // check `hasAnimated` is false
hasAnimated = true; // set to true, next time around this code wont be called
$('#bike').animateNumber({
number: 165
}, 5000);
$('#coffee').animateNumber({
number: 2165
}, 5000);
$('#projects').animateNumber({
number: 385
}, 5000);
$('#users').animateNumber({
number: 315
}, 5000);
}
if ($(this).scrollTop() > 10) {
$('.navbar-default').addClass("scrolled");
$(".navbar-default .navbar-brand").css({
"color": "#3F4474"
});
$(".navbar-default .navbar-toggle .icon-bar").css({
"background-color": "#3F4474"
});
} else {
$('.navbar-default').removeClass("scrolled");
$(".navbar-default .navbar-brand").css({
"color": "#fff"
});
$(".navbar-default .navbar-toggle .icon-bar").css({
"background-color": "#fff"
});
}
});
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 自动修复”;语句前缺少分号“;
- 如何在 API 调用后和 if 语句中启用提交按钮
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 带有多个elseif的Javascript if语句
- location.reload(true)崩溃浏览器选项卡
- 这个条件语句的逻辑有问题
- Sharepoint JScript if语句未执行
- 为什么继续;语句冻结浏览器
- Javascript:If-then语句在函数中不起作用
- SharePoint 2010 Jquery/JSON Rest Multiple OR语句-如何
- 引导程序崩溃一次只能看到一个
- for循环中的javascript if语句找不到==
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- jquery if语句返回return wong语句
- Jquery语句崩溃
- JavaScript 在删除任何琐碎语句后崩溃
- jQuery if语句导致浏览器崩溃
- 为什么当我在最后一个 else 语句中更改杀戮时,它会使浏览器崩溃