2017-05-14 61 views
0

我試圖讓我的腳本觸發只有當屏幕尺寸爲特定大小(800像素),而不僅僅是負載,但在屏幕尺寸重以上。Modernizr的媒體查詢觸發不一致

我已經把它Modernizr的MQ腳本里面,但它引發不一致。有時它會觸發我的腳本在一個小屏幕大小..有時在大......有時根本沒有。這導致我相信我已經完全搞砸了!

任何人都可以指向正確的方向嗎?

$(function() { 
    $(window).resize(function(){ 
    if (Modernizr.mq('(min-width: 800px)')) { 

     // script to trigger 
     $('.dropdown').on('mouseenter mouseleave click tap', function() { 
     $(this).toggleClass("open"); 
     }); 

    } 
    }).resize(); 
}); 

回答

1

可能是因爲你是從resize事件,這將導致的事件觸發的無限循環觸發resize事件。

而且,爲什麼不直接測試屏幕尺寸是多少?

$(function() { 
    $(window).resize(function(){ 

    // Use this for browser width: if(window.innerWidth >= 800) 
    if (screen.width >= 800) { 

     // script to trigger 
     $('.dropdown').on('mouseenter mouseleave click tap', function() { 
     $(this).toggleClass("open"); 
     }); 

    } 
    }); 
}); 
+0

嗨。謝謝,但我讀過的screen.width不給屏幕尺寸的真實指示:http://stackoverflow.com/questions/19291873/window-width-not-the-same-as-media-query – paddyfields

+1

@ paddyfields正如我在回答中所提到的,您需要區分「屏幕」和「瀏覽器」寬度。獲取'screen.wdith'並不矛盾,它會返回屏幕分辨率的大小。當涉及到瀏覽器的寬度,'window.innerWidth'(正如我在我的答案提)是讓瀏覽器窗口中的可用空間的方式。這與'window.width'不同。 –