yurka_s
@yurka_s
front-end'er

Как предотвратить появление новых aside после каждого resize()?

Есть такой код:
$(document).ready(function() {
    scriptsToggle();
    $(window).resize(scriptsToggle);
});
 
function scriptsToggle() {
    if ($('body').width() > 1200) {
        $('<aside></aside>')
            .appendTo('#wrapper');
    } else {
        $('aside').remove();
    }
}

Если три раза увеличить и уменьшить окно браузера, появиться на странице три блока aside, что я упускаю?
  • Вопрос задан
  • 2265 просмотров
Решения вопроса 1
AlexanderTsymbal
@AlexanderTsymbal
tsymbal.su
ну самый быстрый вариант - просто в функции scriptsToggle() добавить в самом начале инструкцию, которая удалит все ранее созданные aside'ы. Если этих самых aside'ов не так много (до 5-10), то всё будет работать быстро. Т.е. при ресайзе будут удаляться все ранее созданные aside и будет рассчитываться заново - добавлять или нет.
function scriptsToggle() {
    $('#wrapper aside').remove();
    if ($('body').width() > 1200) {
        $('<aside></aside>')
            .appendTo('#wrapper');
    } else {
        $('aside').remove();
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Liatano
@Liatano
Тебе просто нужно поставить флаг
$(document).ready(function() {
    scriptsToggle();
	
    $(window).resize(scriptsToggle);

var flag1200=($('body').width() > 1200)?true:false;

function scriptsToggle() {
    if (($('body').width() > 1200)&&!flag1200) {
        $('<aside></aside>')
            .appendTo('#wrapper');
		flag1200=true;
    } else if (($('body').width() < 1200)&&flag1200){
        $('aside').remove();
		flag1200=false;
    }
}
});
Ответ написан
Комментировать
mr_T
@mr_T
Web-разработчик
У тебя функция отрабатывает не только момент прохождения заданной ширины, а при каждом событии ресайза (то есть много-много-много раз). Например, если ты уменьшаешь мышкой окно браузера с ширины 1100 до 900, то у тебя и будет добавлен aside столько раз,сколько сработает событие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 12:03
75000 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект