Повторите функцию для изменения размера окна в jQuery. - PullRequest
3 голосов
/ 16 марта 2011

Я написал функцию, которая изменяет размеры и позиционирует изображения с фиксированным положением. Я хочу повторить функцию "imgControl" при изменении размера окна в jQuery. Я уверен, что есть какой-то супер простой способ сделать это, но мои поиски пока были бесплодны. Возможно, я просто не знаю правильные условия поиска для использования. Любая помощь будет принята с благодарностью!

Всё работает отлично, если я просто копирую функцию в событие изменения размера, но это кажется не элегантным и ненужным. Кажется, должен быть способ просто вызвать функцию снова.

Вот мой код:

$(window).load(function imgControl() {
    $('div.lb_img img').each(function () {
        var lb_img_id = '#' + $(this).attr('id');
        /* image size */
        var max_height = $(window).height() - 50;
        var max_width = $(window).width() - 50;
        $(function() { $(lb_img_id).aeImageResize({width:max_width, height:max_height}); });
        /* image position */
        var img_y = ($(this).attr('height') + 14) * -0.5;
        var img_x = ($(this).attr('width') + 14) * -0.5;
        $(this).css('margin-top', img_y).css('margin-left', img_x);
    });
}); 
$(window).resize(function() {
    imgControl();
});

1 Ответ

14 голосов
/ 16 марта 2011

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

var imgControl = function() {
    $('div.lb_img img').each(function () {
        ... // etc
    });
};

$(document).ready(function () {
    imgControl();
});

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