@lagprincesse

Как загнать все в один цикл?

здравствуйте!
понимаю, что вопрос примитивный и решение элементарное, но не могу осилить(((
есть повторяющийся код, который прям просится, чтобы его засунули в цикл:
$('#input1').focus(function () {
    $('#hint1').hide();
});
$('#input1').blur(function () {
    if ($(this).val().trim() === '') {
        $('#hint1').show();
    }
});


$('#input2').focus(function () {
    $('#hint2').hide();
});
$('#input2').blur(function () {
    if ($(this).val().trim() === '') {
        $('#hint2').show();
    }
});


$('#input3').focus(function () {
    $('#hint3').hide();
});
$('#input3').blur(function () {
    if ($(this).val().trim() === '') {
        $('#hint3').show();
    }
});


$('#input4').focus(function () {
    $('#hint4').hide();
});
$('#input4').blur(function () {
    if ($(this).val().trim() === '') {
        $('#hint4').show();
    }
});


пробую вот так - не работает:
var i;

for (i=1; i<5; i++) {

  var inputText = '#input' + i;
  var hint = '#hint' + i;

  $(inputText).focus(function () {
      $(hint).hide();
  });

  $(inputText).blur(function () {
      if ($(this).val().trim() === '') {
          $(hint).show();
      }
  });

}
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
abyrkov
@abyrkov
JavaScripter
Проблема в hint. Он становится замыканием отсюда и проблемы. Можно разве что посоветовать использовать let.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы