1

画面が特定の幅のときに特定の機能を削除しようとしています。なぜこれがうまくいかないのか教えていただけないでしょうか?

http://jsbin.com/ALAYOru/1/edit

画面が 700 ピクセルを下回ったときに「has-sub-menu」クラスを削除しましたが、それでもマウスオーバー イベントが実行されます。

ありがとう!

4

4 に答える 4

1

またはこれ。

function isWindowSmall()
{
  if(window.innerWidth < 700px) return true;
  else return false;
}




$(".some-btn").on('click',function()
{
  if(isWindowSmall()){
  //do something for small windows
}
else{
  //do something else for big windows
}
});
于 2013-09-06T13:44:31.503 に答える
0

それは、これがしていることだからです。

$(".has-sub-menu").mouseenter(function(){
   $(this).css('background-color','red');
}).mouseleave(function(){
   $(this).css('background-color','transparent');
});

これにより、 のクラスを持つすべての要素が検索.has-sub-menuされ、イベント リスナーがアタッチされるため、このリスナーは永久に適用されます。次のようなことができます。

$("body").on({
  mouseenter: function(){
     $(this).css('background-color','red');
  },
  mouseleave: function(){
     $(this).css('background-color','transparent');
  }
}, '.has-sub-menu');

これにより、要素がクリックされるたびにクラスがあるかどうかがチェックされます

デモ: http://jsbin.com/ALAYOru/6/edit

注: デモでは、適切な効果を確認するために、出力ウィンドウを 720 ピクセルより大きくしてから更新する必要がある場合があります。

于 2013-09-06T14:06:04.033 に答える
0

画面サイズをチェックする関数を追加し、onmouseover イベント リスナーを削除できます。

function check_screen() {
if(window.innerWidth < 700px) 
{
whateveryourelementiscalled.removeEventListner('onmouseover', //whatever your mouseover function was);
}
} 
于 2013-09-06T13:49:51.793 に答える
0

これを試して。

window.onresize = function () {
    if(window.innerWidth < 700) {
        // your code here
    }
}
于 2013-09-06T13:43:04.387 に答える