@savage_me

Вопрос на понимание Javascrpipt — почему событие $('#id').click(function(){...}); срабатывает дважды?

Вот такой код. Сначала запускаем функцию при загрузке окна, потом при изменении размеров окна.
<html><head>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script>
$( window ).on( "load", function() {
	ff();
});
$(window).resize(function() {
    clearTimeout(this.id);
    this.id = setTimeout(ff, 1500);
});

function ff() {
var windowWidth = window.innerWidth ? window.innerWidth : $(window).width();
if( windowWidth <= 500 ) $( "#idx" ).click(function() { alert(windowWidth); });
if( windowWidth > 500 ) $( "#idx" ).click(function() { alert(windowWidth); });
}
</script>
</head><body><img src="https://assets.servedby-buysellads.com/p/manage/asset/id/32054" id="idx">
</body></html>


Страница изначально загружается в браузере с шириной экрана меньше 500 пикселей. Потом нажимается справа сверху кнопка "Расширить" и окно браузера разворачивается на весь экран - ширина экрана становится больше 500 пикселей. Уже в развернутом экране делается клик на элемент с id="idx" и срабатывают два алерта - один сначала показывает, что ширина экрана меньше 500 пикселей, а второй - что больше. То есть при малом размере экрана происходит что-то вроде регистрации события $( "#idx" ).click(function() {});, и оно срабатывает, даже когда ширина экрана уже изменилась.

Почему так? Надо что бы срабатывало событие по текущему размеру экрана.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы