iOS $(document).on() 在 modal 中工作,$('').click(function() 仅在站



我有一个JS脚本,我直接在网站上使用一次,一次在模态中使用。现在我有iOS问题,该功能

$(document).on('click', '.btn-level', function(ev) {})

仅在模态内部工作,但不能直接在网站上工作。如果我使用这个:

$('.btn-level').click(function(ev) {})

它适用于网站,但不适用于模态。

我怎样才能编写它,使其在两种情况下都能工作?

您发布的两个表达式之间存在重大差异。

$(document).on('click', '.btn-level', function(ev) {})

绑定在$(document).在$(document)内的任何click事件上,如果ev.target.btn-level选择器匹配,则执行代码。这意味着即使您单击执行绑定时 DOM 中不存在的按钮,您的代码也会被执行。

第二种语法,

$('.btn-level').click(function(ev) {})

。运行绑定函数时,将一个事件绑定到 DOM 中存在的每个$('.btn-level')。这意味着,如果您创建更多此类按钮或使用$.ajax(),它们将不会绑定任何事件。

这就是为什么你应该坚持使用第一个语法,如果你想让你的事件在你的所有 DOM 元素上工作,包括那些目前在 DOM 中不存在的元素。


另一个相当重要的注意事项是,如果出现以下情况,某些版本的 Safari 会忽略click事件:

  • 该元素是一个input[type="hidden"]
  • 该元素没有cursor:pointer

为了解决这个问题,您可能需要设置

.btn-level { cursor:pointer; }

在您的 CSS 中,如果隐藏了输入,请将其更改为任何其他类型并使用visibility将其隐藏。

最新更新