Jquery 滚动无法正确执行
Jquery scroll doesn't execute correctly
我对一个大而简单的脚本有问题。单击按钮时,我需要突出显示一些div的背景。一切正常,直到我添加一个滚动函数来添加其他着色规则。
我在滚动时有以下 javascript 代码:
$(document).ready(function(){
$(window).scroll(function()
{
var $top1 = $('.container_img_banchi_idraulici').offset().top + 330;
var $top_bpf = $('#BPF-T3000').offset().top -100;
if (($(window).scrollTop()>$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
color_bpf_t3000();
}
if (($(window).scrollTop()<$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
no_color_bpf();
}
和其他函数代码:
COLOR_BPF:
function color_bpf_t3000(){
for (i = 0; i<BPF_T3000.length; i++){
$('#'+BPF_T3000[i]+'.rettangolo_test').animate({ backgroundColor: color_green });
$('#'+BPF_T3000[i]+' + a').css('font-weight', 'bold');
}
for (i = 0; i<BPF_T3000_optional.length; i++){
$('#'+BPF_T3000_optional[i]+'.rettangolo_test').animate({ backgroundColor: color_yellow });
$('#'+BPF_T3000_optional[i]+' + a').css('font-weight', 'bold');
}
}
NO_COLOR
function decolora_bpf(){
reset_colors();
for (i = 0; i<combinati.length; i++){
$('#'+combinati[i]+'.rettangolo_test').animate({ backgroundColor: color_green });
$('#'+combinati[i]+' + a').css('font-weight', 'bold');
}
}
RESET_COLOR
function resetta_colori(){
$('.rettangolo_test').css('background-color', color_white);
$('.rettangolo_test + a').css('font-weight', 'normal');
}
发生的情况是,即使.hidden_combinati没有显示,也会执行no_color_bpf。
但是如果我写这样的代码
if (($(window).scrollTop()<$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
alert("hello");
no_color_bpf();
}
一切正常。
似乎该功能在显示无之前执行。我试图用 .delay() 和其他方法延迟函数,但没有办法解决。
有什么建议吗?
谢谢!
编辑 1var scrolltop = $(window).scrollTop();
console.log("scrolltop "+scrolltop);
console.log("top_Btp "+top_bpf);
console.log("display " +$('.hidden_combinati').css("display"));
console.log("if " + scrolltop<top_bpf && $('.hidden_combinati').is(':visible'));
console.log("if2 " +scrolltop < top_bpf);
console.log("if2 " +scrolltop > top_bpf);
输出如下所示:
top_Btp 911
display block
false
false
false
scrolltop 506
top_Btp 911
display block
false
false
false
scrolltop 507
top_Btp 911
display block
false
false
false
以此类推,即使滚动顶部超过Top_bpt。
我做错了什么??
我发现使用 console.log() 调试我的代码以检查出了什么问题非常有用。我会运行一个
console.log($(window).scrollTop());
console.log($top_bpf);
console.log($('.hidden_combinati').css("display"));
首先,要确定是什么使条件成立。
console.log() 输出到 JavaScript 控制台,该控制台位于 Chrome 中的 "inspect element" 和 Firefox 的 "firebug" 中。
相关文章:
- 如何停止两个按钮执行相同的工作?在这种情况下,它们都会滚动到顶部
- 如何在滚动期间暂停javascript执行
- 滚动不'在移动浏览器中执行手势操作后无法工作
- 如何检查窗口是否已滚动到href,然后在javascript/jQuery中执行函数
- Jquery 滚动无法正确执行
- 如何在Twitter对话中的每个无限滚动事件上执行Greasemonkey脚本
- 当您滚动到特定页面位置时,如何执行此操作,该功能将启动一次
- 函数将在滚动到该部分时执行
- 如何在执行 jquery 事件后保持页面滚动位置
- 如何执行递归函数以重置/维护滚动事件的时间延迟
- 对多个滚动事件执行一次操作并防止滚动
- 单击提交按钮后,屏幕向下滚动,不执行任何操作
- 执行列排序后,dgrid 无法保留滚动位置
- 如何检测滚动位置以执行 jQuery
- $(window).滚动在if语句内部执行,即使它没有't不符合条件
- 如何在无限滚动中处理javascript的执行
- 向上滚动时,不要让函数在顶部执行.以及当向下滚动时处于锚点时
- 执行JQuery脚本时页面滚动到顶部
- 当用户从顶部滚动超过一定距离时,执行Javascript
- 在Chrome手机上滚动时执行JS