$(window).width()if语句运行时不应该运行

时间:2016-06-08 09:54:52

标签: javascript jquery

嘿伙计我在jQuery中遇到gate $(window).width语句的问题。出于某种原因,即使窗口宽度小于if像素,我的函数仍在运行,但是我的991语句指出如果窗口宽度大于if,它应该运行。

991

正如您所看到的那样,function ctaFixTop() { var mn = $("#new-car-offer-cta"); var offerHead = $('#new-car-offer-head'); mns = "new-car-offer-cta-active"; var hdr = 0; var ctaHeight = $("#new-car-offer-cta").height(); $('.header-wrapper, #top-bar, #new-car-back, #new-car-offer-head').each(function() { hdr += $(this).outerHeight(); }); if ($(window).width() > 991) { $(window).scroll(function() { if ($(this).scrollTop() > hdr) { offerHead.css('margin-bottom', ctaHeight); mn.addClass(mns); } else { offerHead.css('margin-bottom', 0); mn.removeClass(mns); } }); } } $(window).resize(ctaFixTop); ctaFixTop(); 函数被调用两次,一次在初始加载时以及每当调整窗口大小时。当我最初加载窗口宽度低于991px的页面时,该功能应该如何应用,但是如果我将窗口大小增加到911px并将其大小调整到911px以下,ctaFixTop函数将被调用,即使它是&#39 ; s包含在$(window).scroll语句中,声明只有在窗口宽度大于991时才会运行。

任何想法为什么会发生这种情况,因为我已经尝试了解决这个问题并且根本无法理解为什么函数被调用,即使它周围有if语句。

由于

1 个答案:

答案 0 :(得分:3)

这是因为scroll事件已经附加到窗口而您没有删除它。你需要做的是把

  if ($(window).width() > 991) {

在这样的.scroll()方法中。

 $(window).scroll(function() {
  if ($(window).width() > 991) {
    if ($(this).scrollTop() > hdr) {
        offerHead.css('margin-bottom', ctaHeight);
        mn.addClass(mns);
    } else {
        offerHead.css('margin-bottom', 0);
        mn.removeClass(mns);
    }
}});