У меня есть цикл foreach, который заполняет мою страницу. Это заполняет несколько тегов ввода, которые являются кнопками, все кнопки имеют одинаковый класс. Когда я нажимаю одну кнопку, все кнопки нажимаются. Есть ли способ, чтобы, когда я нажимаю только одну кнопку, она реагирует только на эту кнопку. Если у меня двадцать кнопок и я нажимаю кнопку, я получаю 20 предупреждений («тест»). Что я могу изменить, чтобы получить только одно предупреждение («тест»).

Вот мой HTML с некоторыми Laravel

<input class="interview-yes" id="{{$scan->id}}" type="submit" value="Yes"">

Вот мой jquery

$('.interview-yes').click(function () {
  alert($(this.id));
)};
1
Aaron 19 Сен 2017 в 20:07

3 ответа

Лучший ответ

Проверьте этот метод вместо:

$(document).on('click','.interview-yes',function () {
  alert($(this).attr('id'));
)};
1
Himanshu Upadhyay 19 Сен 2017 в 17:39

Поскольку ваша кнопка динамическая, вам нужно event delegate.

$(document).on('click', 'input.interview-yes', function () {
  console.log($(this).attr('id'));
)};

Вот вам пример

for(var i=0; i<10; i++){
  $('body').append(`<input class="interview-yes" id="input_${i}" type="submit" value="Yes" />`);
}

$(document).on('click', 'input.interview-yes', function(){
  console.log($(this).attr('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Надеюсь, что это поможет вам.

1
Shiladitya 19 Сен 2017 в 17:25