jQuery - проверка, проверяется ли «checbox» при входе - PullRequest
0 голосов
/ 26 апреля 2018

Мне трудно понять, почему мой второй код здесь не работает (Ruhetag 2, который только что отредактирован). В качестве проверки, чтобы убедиться, что мой таргетинг в порядке, я написал Ruhetag1, который работает при нажатии на мои чекбоксы, но затем я написал Ruhetag2, чтобы он также имел ту же функцию, но дополнительно проверил, какие флажки уже были отмечены при входе. Ruhetag1 работает нормально, Ruhetag2 вообще не реагирует - он также не выдаёт мне сообщение об ошибке. Можете ли вы помочь мне увидеть, где это падает вниз. Большое спасибо.

Ruhetag1

$(".quiet").click(function (e) {
    $(this).parent().find(".optimes input[type=text]").val('');
    $(this).parent().find(".optimes").toggle(); 
});

Ruhetag2

$(function(){   
    $(".quiet").each(function(){
        quiet(this);
    });
    $(".quiet").click(function() {
        quiet(this);
    });
});
function quiet() {
    if ($(this).is(':checked')) {
        $(this).parent().find(".optimes input[type=text]").val('');
        $(this).parent().find(".optimes").hide();
    } else {
        $(this).parent().find(".optimes").show();
    }
}

1 Ответ

0 голосов
/ 26 апреля 2018

Элемент не передается в функцию quiet(), поэтому $(this) не существует внутри функции. Попробуйте ниже?

$(function(){   
  $(".quiet").each(function(){
    quiet($(this));
  });
  $(".quiet").click(function() {
    quiet($(this));
  });
});

function quiet(elem) {
   var checkbox = elem;
       if (checkbox.is(':checked')) {
          checkbox.parent().find(".optimes input[type=text]").val('');
          checkbox.parent().find(".optimes").hide();
      } else {
          checkbox.parent().find(".optimes").show();
      }
}
...