单击事件选项不在safari中工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击事件选项不在safari中工作相关的知识,希望对你有一定的参考价值。

我在一个非常简单的代码的帮助下重新创建我的问题(见下文):

<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中使用吗?

答案

有一些已知的解决方法:

  • cursor:pointer添加到你的<option>s
  • .click(function(){})取代.on('click touchstart', function(){})

另一种选择(和恕我直言,正确的选择)是在父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>

以上是关于单击事件选项不在safari中工作的主要内容,如果未能解决你的问题,请参考以下文章

多个 RecyclerView 不在同一个片段中工作

如何让“Pointermove”委托在父母/孩子的Safari iOS中工作?

Jquery 表单提交不能在 chrome 中工作,但在 Firefox 中工作

Span<T> 和朋友不在 .NET Native UWP 应用程序中工作

如何使 flex box 在 safari 中工作?

WPF - groupbox伸展不在水平堆栈面板中工作