可变两个选项

时间:2015-04-16 12:45:32

标签: javascript jquery scroll var

环顾四周,无法找到解决这个非常简单问题的任何东西。

我还在学习jQuery,所以事先为我的愚蠢道歉,我知道这是一个非常简单的修复方法,但比如使用||并尝试使用ifelse var内的jQuery(window).scroll(function() { Menuresize(); }); function Menuresize() { var myheight = jQuery(".section-image-slider, .section-video-slider").height() - 90; var myheightalt = jQuery(".area-tag").height() - 167; var scroll = jQuery(window).scrollTop(); if (scroll > myheight) { jQuery(".bt-menu").addClass("whitebg"); } elseif (scroll > myheightalt){ jQuery(".bt-menu").addClass("whitebg"); } else {jQuery(".bt-menu").removeClass("whitebg");} }; jQuery(window).resize(function() { Menuresize(); }); 看不到为我工作。

基本上这就是我目前所拥有的。我想要的只是添加/删除课程" whitebg"取决于元素的滚动位置和高度,效果很好。

问题是试图查询两个不同的元素,每个元素都需要一个不同的高度缓冲区,如你所见(-167和-90),所以不能分组,但需要是/或者'所以两者都被考虑在内。

非常感谢

RB

{{1}}

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,toggleClass可以使用布尔参数来打开/关闭指定的类。然后,您可以计算出导致truefalse

的复合布尔表达式

e.g。

 jQuery(".bt-menu").toggleClass("whitebg", scroll > myheight || scroll > myheightAlt);

我发现这个问题有点难以理解,如果这是你想要的其他内容,请澄清:)

答案 1 :(得分:0)

Menuresize函数获取选择器和高度的参数,然后只为每个参数调用:

function Menuresize(selector, height) {

    var myheight = jQuery(selector).height() - height;

    var scroll = jQuery(window).scrollTop();

    if (scroll > myheight) {
        jQuery(".bt-menu").addClass("whitebg");
    }
    else {
        jQuery(".bt-menu").removeClass("whitebg");
    }
};

jQuery(window).resize(function() {
    Menuresize(".section-image-slider, .section-video-slider", 90);
    Menuresize(".area-tag", 167);
});