jQuery -- 为什么只执行第一个条件,或者如果第一个条件为 false,则根本不执行
jQuery -- Why is only the very first condition ever executed or none at all if the first condition is false?
我试图做的是有一个固定的按钮,一旦点击,就会滚动到页面上的特定部分。但是,只有第一个条件被执行,其他条件似乎被完全忽略,即使第一个条件为 false。我在这里做错了什么?下面是代码。
function scroll() {
var dob = $('#dob');
var one = $('#one');
var two = $('#two');
var thr = $('#thr');
var fou = $('#fou');
var fiv = $('#fiv');
var scr = $(window).scrollTop();
var win = $(window).height();
dob.click(function(){
if ( scr < win ) {
$('html, body').delay(125).animate({
'scrollTop' : two.offset().top
});
}
else if ( scr >= win && scr < (win * 2) ) {
$('html, body').delay(125).animate({
'scrollTop' : thr.offset().top
});
}
else if ( scr >= win * 2 && scr < (win * 3) ) {
$('html, body').delay(125).animate({
'scrollTop' : fou.offset().top
});
}
else if ( scr >= win * 3 && scr < (win * 4) ) {
$('html, body').delay(125).animate({
'scrollTop' : fiv.offset().top
});
};
});
};
$(document).ready(function(){scroll();});
这是因为当
scroll
函数在文档就绪上运行时,scr
和win
的值仅设置一次。您可能希望在每次调用click
时刷新它们。
所以正确的版本应该是:
function scroll() {
var dob = $('#dob');
var one = $('#one');
var two = $('#two');
var thr = $('#thr');
var fou = $('#fou');
var fiv = $('#fiv');
}
dob.click(function() {
var scr = $(window).scrollTop();
var win = $(window).height();
if (scr < win) {
$('html, body').delay(125).animate({
'scrollTop': two.offset().top
});
} else if (scr < (win * 2)) {
$('html, body').delay(125).animate({
'scrollTop': thr.offset().top
});
} else if (scr < (win * 3)) {
$('html, body').delay(125).animate({
'scrollTop': fou.offset().top
});
} else if (scr < (win * 4)) {
$('html, body').delay(125).animate({
'scrollTop': fiv.offset().top
});
};
});
$(document).ready(function() {
scroll();
});
你的函数混淆了。您希望所有滚动内容都在一个函数中,然后将单击处理程序绑定到该函数,并在 document.ready 上初始化它:
$(document).ready(function () {
scroll();
var dob = $('#dob');
dob.click(function(){
scroll();
}
});
function scroll() {
var one = $('#one');
var two = $('#two');
var thr = $('#thr');
var fou = $('#fou');
var fiv = $('#fiv');
var scr = $(window).scrollTop();
var win = $(window).height();
if ( scr < win ) {
$('html, body').delay(125).animate({
'scrollTop' : two.offset().top
});
}
else if ( scr >= win && scr < (win * 2) ) {
$('html, body').delay(125).animate({
'scrollTop' : thr.offset().top
});
}
else if ( scr >= win * 2 && scr < (win * 3) ) {
$('html, body').delay(125).animate({
'scrollTop' : fou.offset().top
});
}
else if ( scr >= win * 3 && scr < (win * 4) ) {
$('html, body').delay(125).animate({
'scrollTop' : fiv.offset().top
});
};
}
相关文章:
- 使用数据上的角度更改设置集合的第一个元素的动画
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- 基于两个条件退出While循环
- 字母计数:返回重复字母数最多的第一个单词
- 如何使用Javascript在HTML表中查找第一个空行
- If语句只执行第一个条件并运行其他条件,但没有结果
- 在if语句中检查这两个条件,即使第一个条件为false
- JQuery if else跳过第一个有效条件之后的所有内容
- 函数仅适用于第一个条件
- 获取数组中满足 Javascript 条件的第一个元素的高阶方法
- 我如何编写一个 Javascript for 循环,以便在满足第一个条件时中断
- JQuery/Javascript 只执行第一个条件(在带有 apex:outputpanel 的 visualforc
- jQuery -- 为什么只执行第一个条件,或者如果第一个条件为 false,则根本不执行
- jquery:如果第一个选择器返回为空,有没有一种简明的方法可以有条件地使用第二个选择器
- 为什么我的带有hasClass的if/else条件只激发第一个条件
- Jquery-第一个条件为true的实例
- JS,JSON:如何在满足2个条件的情况下获得n个第一项
- 使用Jquery获取匹配条件的第一个前一个元素
- 如果第一个条件为true,则在javascript中为变量赋值,引用错误左侧赋值无效
- 获取条件为Angular的第一个元素