2014-07-15 27 views
0

我試圖做出響應下拉菜單欄,並且我想在PC和手機之間設置不同的jQuery事件。當窗口寬度小於766px時做些什麼

所以我做了一些jQuery的事件......

做的東西,如果窗口寬度小於767px要不....

這是我在這裏的代碼。

$(document).ready(function(){ 
    if ($(window).width() < 767) { 
     $('.mGnb a').click(function() { 
      $('#subLayer').slideToggle(200); 
      return false; 
     }); 
    } 
    else { 
     $('.mGnb a').hover(function() { 
      $('#subLayer').slideUp(200); 
      return false; 
     }); 
    }); 
}); 

它工作正常。但問題是當我調整窗口大小時,jQuery不起作用。當我調整和刷新(F5)頁面時,它工作。

我需要解決什麼問題?

+1

儘管正確的答案已經被提供,爲什麼你想與JS來做到這一點?也許@ media-querie會適合你的CSS目的。 http://www.w3.org/TR/css3-mediaqueries/ – frikinside

回答

-1

問題是你的寬度只能通過$(document).ready()計算得到,你應該找到一種方法來重新計算它每隔x秒鐘的時間,如計時器等。

setInterval(function(){ 
var width = $(".element").width(); 
},100); 

這樣,可變寬度將每隔0.1秒更新一次。

+1

我修改了我的帖子。 – Azrael

+0

你讓事情變得複雜無故,特別是當你有'resize'事件時。你看,'JavaScript'是'事件驅動的'。你需要放棄你的傳統編程模型,以便高效地使用JavaScript的所有功能:) – AdityaParab

5

使用這樣的:

$(window).on('resize',function(){ 
//your code here 
}).resize(); 
+0

如果你想限制函數調用:http://benalman.com/code/projects/jquery-throttle- debounce/examples/throttle/ – Prasanth

+1

爲什麼最後調用'.resize()'? –

+1

@DimitarDimitrov函數本身在調整大小處理程序內部,並且在第一次加載時,如果最後不使用它,它將不起作用...這意味着調整大小會在加載時觸發... –

0

而不是做它的文件準備的。將事件處理程序附加到窗口的resize事件。

0

你可以用函數包裝你的代碼,並從窗口把它調整事件是這樣的:

$(window).resize(function(){ 
    //your function here 
}); 
0

辦事的窗口縮放您可能要添加的事件處理程序resize事件。

就是這樣。

$(document).on('ready',function(){ 
    $(window).on('resize',function(){ 
     resize(); 
    }) 
}); 

function resize(){ 
    if ($(window).width() < 767) { 
     $('.mGnb a').click(function() { 
      $('#subLayer').slideToggle(200); 
      return false; 
     }); 
    } 
    else { 
     $('.mGnb a').hover(function() { 
      $('#subLayer').slideUp(200); 
      return false; 
     }); 
    } 
} 
0
$(document).ready(myfunc); 
$(window).resize(myfunc); 
function myfunc(){ 
if ($(window).width() < 767) 
{ 
    $('.mGnb a').click(function() 
    { 
     $('#subLayer').slideToggle(200); 
     return false; 
    }); 
} 
else 
{ 
    $("#header").mouseleave(function() 
    { 
     $(this).animate({height: "96px"}, 200); 
    }); 
} 
} 
相關問題