2015-04-10 2 views
2

Я пытаюсь, чтобы этот сайт показывал вкладку на больших экранах, но просто обычный макет на меньших экранах. Вот что у меня есть: обработчик событияПочему не работает window.onresize? (javascript/jquery)

function adapt() { 
if(document.documentElement.clientWidth > 800) { 

    $(document).ready(function() { 

     $(".box").hide(); 
     $(".box:first").show(); 

     $("ul.tabs li").click(function() { 
      $("ul.tabs li").removeClass("active"); 
      $(this).addClass("active"); 
      $(".box").hide(); 
      var activeTab = $(this).attr("rel"); 
      $("#"+activeTab).show(); 
     }); 
    }); 

}else{ 
    $(document).ready(function() { 
     $('.box').show(); 
    }); 
};} 

window.onload = adapt(); 
window.onresize = adapt(); 

OnLoad работает, поэтому функция JQuery вкладки-бокс работает только при загрузке на экране большего размера страницы, и это показывает все содержимое при загрузке на небольшом экране. Я добавил событие onresize, чтобы оно также изменилось, когда окно браузера сократилось, но оно не работает. Если я загружаюсь на большой экран, а затем уменьшаю его, все, что отображается, это содержимое, которое было на первой вкладке, и если я загружаюсь на маленький экран, а затем увеличиваю окно, отображается весь контент и кнопки вкладок не работают. Я просто неверно истолковал, как работает window.resize?

Я предполагаю, что, возможно, событие срабатывает только при первом изменении размера, и если разницы недостаточно для того, чтобы мое другое условие было захвачено, этого не происходит. Если это так, есть ли способ постоянно проверять размер экрана, например, с помощью мультимедийных запросов CSS?

+0

попробовать больше, как это -> http://jsfiddle.net/e8Lpc1gp/ – adeneo

ответ

6

Вы должны вызвать ссылку, не выполнить функцию

window.onload = adapt; 
window.onresize = adapt; 

Потому что, когда вы делаете

window.onload = adapt(); 
window.onresize = adapt(); 

Вы выполнить адаптацию() и так как он не возвращать ничего, вам ничего не сделали на них события

+0

Это работает! Благодаря! – Nathan

1

Вы можете попробовать с JQuery:

$(document).ready(function() { 
    adapt(); // onload 
    $(window).resize(adapt()); // resize 
}); 
3

не забывайте, что если какой-либо другой код в вашем проекте также использует window.onresize или window.onload - ваш код будет переписан

это лучшая практика для использования addEventListener функцию

window.addEventListener('resize', adapt); 
+0

плюс один для этой очень важной заметки! – Yahya

Смежные вопросы