Генерация случайных кликов - PullRequest
0 голосов
/ 11 декабря 2019

Я хочу иметь возможность рандомизировать события нажатия на кнопки в списке элементов. Я видел похожий код для добавления классов, но мне нужно смоделировать события случайного щелчка по списку элементов.

$(function() {
  $("button").click(function() {
    $(this).toggleClass("active");
  });
  $(".item").each(function(i, e) {
    var button = $(this).find("button");
    ranNum = Math.floor(Math.random() * (6 - 2 + 1)) + 2;
    if ((i + 1) % ranNum == 0) {
      $(e).button.click();
    }
  });
});
.active {
  background: green
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item">
  <button>Button 1</button>
</div>
<div class="item">
  <button>Button 2</button>
</div>
<div class="item">
  <button>Button 3</button>
</div>

1 Ответ

1 голос
/ 11 декабря 2019

Вместо запуска события click вы можете повторно использовать анонимную функцию, сохранив ее в переменной, давайте назовем ее toggleActive

Мы можем применить this к нашей функции с помощью метода вызова

$(function() {
  var toggleActive = function() {
    $(this).toggleClass("active");
  };
  $("button").click(toggleActive);
  $(".item").each(function(i, e) {
    var button = $(this).find("button");
    ranNum = Math.floor(Math.random() * (6 - 2 + 1)) + 2;
    if ((i + 1) % ranNum == 0) {
      toggleActive.call(button);
    }
  });
});
.active {
  background: green
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item">
  <button>Button 1</button>
</div>
<div class="item">
  <button>Button 2</button>
</div>
<div class="item">
  <button>Button 3</button>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...