Подтвердить что ты не робот

JQuery: Как определить ширину окна на лету?

У меня есть элемент прокрутки на моей странице (с плагином jScrollPane jQuery). То, что я хочу выполнить, - это способ отключить окно прокрутки, указав ширину окна браузера. Я делаю отзывчивый макет, и я хочу, чтобы эта функция прокрутки была отключена, когда браузер находится под определенной шириной. Я могу заставить его работать, когда я обновляю страницу, но когда я изменяю размер окна браузера, значение ширины не обновляется "на лету".

Прямо сейчас, если я начну с окна шириной 1000 пикселей, а затем изменим размер до 350 пикселей, функция прокрутки останется. Я хочу, чтобы функция прокрутки была отключена, как только ширина браузера достигла 440 пикселей.

Вот код, который у меня есть до сих пор.

var windowsize = $(window).width();

$(window).resize(function() {
  var windowsize = $(window).width();
});

if (windowsize > 440) {
  //if the window is greater than 440px wide then turn on jScrollPane..
    $('#pane1').jScrollPane({
       scrollbarWidth:15, 
       scrollbarMargin:52
    });
}
4b9b3361

Ответ 1

Изменение переменной не волшебным образом выполняет код в if -блоке. Поместите общий код в функцию, затем привяжите событие и вызовите функцию:

$(document).ready(function() {
    // Optimalisation: Store the references outside the event handler:
    var $window = $(window);
    var $pane = $('#pane1');

    function checkWidth() {
        var windowsize = $window.width();
        if (windowsize > 440) {
            //if the window is greater than 440px wide then turn on jScrollPane..
            $pane.jScrollPane({
               scrollbarWidth:15, 
               scrollbarMargin:52
            });
        }
    }
    // Execute on load
    checkWidth();
    // Bind event listener
    $(window).resize(checkWidth);
});

Ответ 2

Поместите ваше условие if внутри функции resize:

var windowsize = $(window).width();

$(window).resize(function() {
  windowsize = $(window).width();
  if (windowsize > 440) {
    //if the window is greater than 440px wide then turn on jScrollPane..
      $('#pane1').jScrollPane({
         scrollbarWidth:15, 
         scrollbarMargin:52
      });
  }
});

Ответ 3

Я не знаю, будет ли это полезно для вас при изменении размера вашей страницы:

$(window).resize(function() {
       if(screen.width == window.innerWidth){
           alert("you are on normal page with 100% zoom");
       } else if(screen.width > window.innerWidth){
           alert("you have zoomed in the page i.e more than 100%");
       } else {
           alert("you have zoomed out i.e less than 100%");
       }
    });

Ответ 4

Ниже показано, что я сделал, чтобы скрыть некоторый элемент Id, когда размер экрана ниже 768 пикселей, и показывается, когда он выше 768 пикселей. Он отлично работает.

var screensize= $( window ).width();

if(screensize<=768){
        if($('#column-d0f6e77c699556473e4ff2967e9c0251').length>0)
            {
                $('#column-d0f6e77c699556473e4ff2967e9c0251').css('display','none');
            }
}
else{
        if($('#column-d0f6e77c699556473e4ff2967e9c0251').length>0)
            {
                $('#column-d0f6e77c699556473e4ff2967e9c0251').removeAttr( "style" );
            }

}
changething = function(screensize){
        if(screensize<=768){
            if($('#column-d0f6e77c699556473e4ff2967e9c0251').length>0)
            {
                $('#column-d0f6e77c699556473e4ff2967e9c0251').css('display','none');
            }
        }
        else{
        if($('#column-d0f6e77c699556473e4ff2967e9c0251').length>0)
            {
                $('#column-d0f6e77c699556473e4ff2967e9c0251').removeAttr( "style" );
            }

        }
}
$( window ).resize(function() {
 var screensize= $( window ).width();
  changething(screensize);
});