0
嘿,我有一個問題$(window).width
if
0123在jQuery中的語句。出於某種原因,即使窗口寬度小於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();
正如你可以看到ctaFixTop
函數被調用兩次,一次在初始加載並且每當調整窗口的大小。當我最初加載窗口寬度低於991px的頁面時,函數的工作方式應該如何,然而,如果我然後增加窗口大小超過911px,並將其大小減小到911px以下,即使在包含if
聲明的$(window).scroll
函數中,函數也會被調用如果窗口寬度大於991,它應該只運行。
任何想法,爲什麼這可能會發生,因爲我試圖解決這個問題,而根本無法理解爲什麼該函數被稱爲即使與if語句周圍。
感謝
滾動事件已經與窗口綁定。只有在頁面加載時纔會檢查您的條件,如果條件爲真,滾動事件將綁定到窗口,直到您解除綁定或卸載頁面。你應該在滾動甚至回調中移動if條件。滾動時每次檢查窗口寬度。 –