событие клика по опции не работает в сафари - PullRequest
0 голосов
/ 24 сентября 2018

Я воссоздаю свою проблему с помощью очень простого кода (см. Ниже):

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <select class="a">
        <option class="b" value="opt1">opt1</option>
        <option class="b" value="opt2">opt2</option>
        <option class="b" value="opt3">opt3</option>
        <option class="b" value="opt4">opt4</option>
    </select>

    <script>
    $('.b').click(function(){
        alert("hi");
    });

    </script>
</body>

Я ожидаю, что если я нажму опцию (в раскрывающемся списке)), должно появиться предупреждение.Это происходит идеально в Firefox, но это не работает в Safari.Может кто-нибудь помочь мне заставить его работать в Safari?

1 Ответ

0 голосов
/ 24 сентября 2018

Существует несколько известных решений:

  • добавьте cursor:pointer к вашим <option> s
  • и замените .click(function(){}) на .on('click touchstart', function(){})

Другой вариант (и, IMHO, правильный) - использовать событие oninput для родителя <select>:

 $('select').on('input', function(){/* whatever */})

$('select').on('input', function(){
  console.log($(this).val())
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option value=""> Select something </option>
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...