Событие JQuery Click не запускается в Safari? - PullRequest
3 голосов
/ 23 января 2009

Я пытаюсь что-то сделать, когда пользователь выбирает опцию из поля выбора - так просто, как может быть правильно? Я использую JQuery 1.3.1, чтобы зарегистрировать обработчик кликов с идентификатором поля выбора. Все было хорошо, пока я не протестировал Chrome и Safari и не обнаружил, что он не работает.

  1. Firefox 3.05 - ДА
  2. I.E 7.0.5730.13 - ДА
  3. IE6Eolas - ДА
  4. Сарафи 3.2.1 - НЕТ
  5. Chrome 1.0.154.43 - НЕТ

См. Ниже код:

<html>
<head>
    <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
    <script language="javascript">
    $(document).ready(function(){
        $('#myoption').click(function() { alert('Select Dropdown was clicked: '+ $('#myoption').val()); });
    });     
    </script>
</head>
<body>
    <select id="myoption">
    <option value="A">A</option>
    <option value="B">B</option>
    </select>
</body>
</html>

Кто-нибудь знает, что я должен делать, чтобы это работало? Предупреждение в конечном итоге срабатывает, но только после двойного щелчка по полю выбора?

Ответы [ 2 ]

5 голосов
/ 23 января 2009

Я нашел свою проблему. Для полей выбора необходимо зарегистрировать обработчик для события «изменение», а не для события «щелчок». Странно, что Firefox и IE работают с событием click.

Подводя итог, следующий код работает во всех браузерах:

<html>
<head>
    <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
    <script language="javascript">
    $(document).ready(function(){
        $('#myoption').change(function() { alert('Select Dropdown was clicked: '+ $('#myoption').val()); });
    });         
    </script>
</head>
<body>
    <select id="myoption">
    <option value="A">A</option>
    <option value="B">B</option>
    </select>
</body>
</html>
1 голос
/ 21 июня 2010

Safari и Chrome являются браузерами, основанными на webkit. Webkit использует собственные выпадающие элементы из вашей ОС вместо того, чтобы реализовывать сами выпадающие списки, и, к сожалению, собственные выпадающие списки не поддерживают события щелчка. По той же причине они также не поддерживают CSS для элементов option или других хитрых уловок.

Единственный кросс-браузерный способ заставить тех, кто работает, - реализовать это вручную, используя

...