2017-05-14 16 views
0

スクリプトのトリガーは、画面のサイズが特定のサイズ(800px)を超えている場合にのみ発生します。Modernizrのメディアクエリが一貫してトリガーされない

私はそれをModernizr mqスクリプトの中に入れましたが、それは一貫していません。時には小さな画面サイズでスクリプトを起動することもあります。それは私が完全にそれを台無しにしたと私に信じさせる!

誰でも正しい方向に向けることができますか?あなたがトリガー・イベントの無限ループを引き起こしresizeイベント、からresizeイベントをトリガしているため

$(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

が可能でした。

また、画面サイズを直接テストするだけではどうですか?

$(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'とは異なります。 –

関連する問題