Функция изменения размера jQuery не работает при загрузке страницы

Как заставить эту функцию работать не только при изменении размера окна, но и при начальной загрузке страницы?

$(window).resize(function() {
...  
});

person Nicki    schedule 08.04.2010    source источник


Ответы (5)


Вы захотите использовать:

$(document).ready(function() { /* your code */ });

Чтобы что-то произошло на загрузке. Если вы хотите, чтобы что-то работало при загрузке и изменении размера, вы должны сделать:

onResize = function() { /* your code */ }

$(document).ready(onResize);

$(window).bind('resize', onResize);
person Kristopher    schedule 08.04.2010

Я думаю, что лучшее решение — просто привязать его к событию загрузки и изменения размера:

$(window).on('load resize', function () {
    // your code
});
person Hativ    schedule 13.07.2014
comment
Это самый простой ответ из всех - person Attila Fulop; 10.06.2016
comment
Это делает его простым и чистым. - person jamesnotjim; 08.07.2016

Такое поведение является особенностью.

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

Например:

function onResize() { ... }

$(onResize);
$(window).resize(onresize);

В качестве альтернативы вы можете сделать плагин для автоматического связывания и выполнения обработчика:

$.fn.bindAndExec = function(eventNames, handler) {
    this.bind(eventNames, handler).each(handler);
};

$(window).bindAndExec('resize', function() { ... });

Обратите внимание, что это не будет работать правильно, если обработчик использует объект event, и что он не покрывает каждую перегрузку метода bind.

person SLaks    schedule 08.04.2010

$(document).ready(onResize);
$(window).bind('resize', onResize);

со мной не работал.

Пытаться

$(window).load('resize', onResize);
$(window).bind('resize', onResize);

вместо.

(Я знаю, что этот вопрос старый, но Google отправил меня сюда, так что...)

person JGSilva    schedule 22.03.2012

Другой подход: вы можете просто настроить обработчик и самостоятельно подделать событие изменения размера:

// Bind resize event handler through some form or fashion
$(window).resize(function(){
  alert('Resized!');
});

// Trigger/spoof a 'resize' event manually
$(window).trigger('resize');
person Andy Corman    schedule 05.04.2014