`

在IOS设备上点击span标签不能触发jquery的.click()事件

    博客分类:
  • HTML
阅读更多

记一次事件委托在 ios 下的兼容 bug

项目中碰到的兼容类 bug,记录一二。

页面上有几个同类型的控件,点击它们会触发一些事件,很显然,事件委托优于批量绑定。为了图方便,我将 click 事件绑定到了 document.body 上(绑定在 document 上也是一样),在安卓机上反应良好,ios 上居然不会触发点击事件!

试着将事件绑定到了控件的父级元素,问题消失了。

事实上,当使用事件委托给一个元素添加 click 事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效。如果是可点击的(比如 button、a 标签),此时 click 事件还是有效的,这点要特别注意。

 

  1. 使用原生的支持click冒泡到document的元素,例如abutton
  2. 委托事件的时候,委托到body以下的元素上面

解决办法

解决办法有 4 种可供选择:

  1. ​将 click 事件直接绑定到目标​元素(​​即 .target)上
  2. 将目标​元素换成 <a> 或者 button 等可点击的​元素
  3. ​将 click 事件委托到​​​​​非 document 或 body 的​​父级元素上
  4. ​给​目标元素加一条样式规则 cursor: pointer;

​推荐后两种。从解决办法来看,​推测在 safari 中,不可点击的元素的点击事件不会冒泡到父级元素。通过添加 cursor: pointer 使得元素变成了可点击的了。

分享到:
评论

相关推荐

    jQuery.mmenu-jquery.mobile最好看的侧边菜单

    jQuery Mobile是jQuery项目的一个分支,专注于提供一套全面的、跨平台的触控友好的UI组件,适用于移动设备和桌面浏览器。它使用单一代码库支持多种移动操作系统,如iOS、Android和Windows Phone。jQuery Mobile通过...

    jQuery.mobile-1.0.1.js与jQuery.mobile-1.0.1.min.js

    这个框架支持多种设备和浏览器,包括iOS、Android、BlackBerry等主流移动平台,以及桌面浏览器,实现了跨平台的一致性。 **jQuery.mobile-1.0.1.js与jQuery.mobile-1.0.1.min.js** 这两个JavaScript文件是jQuery ...

    jquery.media在线预览pdf文件

    值得注意的是,jQuery.media依赖于Adobe Flash Player,因此在某些不支持Flash的设备(如iOS设备)上可能无法正常工作。此外,随着HTML5技术的发展,Flash已经逐渐被淘汰,所以对于现代浏览器,你可能需要考虑使用...

    jquery.mobile-1.4.5

    为了适应触控设备,jQuery Mobile 提供了自定义的触摸事件,如`vclick`、`taphold`等,以解决浏览器原生事件在移动设备上的延迟问题。这些优化在`jquery.mobile.structure-1.4.5.css`中有所体现,确保了用户界面的...

    jquery.nicescroll仿IOS滚动条美化插件.zip

    1. 兼容性测试:虽然jQuery.nicescroll具有较好的兼容性,但在实际应用中仍需进行充分的浏览器和设备测试,确保在不同环境下都能正常工作。 2. 性能考虑:在大型或高性能要求的项目中,需注意滚动条的渲染性能,...

    jQuery跨浏览器幻灯片插件jquery.iosslider

    插件描述:iosSlider iosSlider是一个可定制的、跨浏览器幻灯片jQuery插件。设计用于作为内容滑块、旋转木马、滚动网站旗帜或者图片库。其效果类似于ios的横向滚屏效果.参考示例:...

    IOS点击标签触发事件

    在iOS开发中,UI设计和交互是至关重要的部分,而UILabel作为展示文本的基本元素,通常不直接支持点击事件。然而,通过一些技巧,我们可以让UILabel响应用户的点击操作,实现所谓的"点击标签触发事件"。本篇文章将...

    jquery.nicescroll仿IOS滚动条美化插件

    jQuery.nicescroll 的核心特性就是模拟了苹果设备上的滚动条样式,这种简洁而优雅的设计深受用户喜爱。它提供了透明背景、细长的滑块以及平滑的滚动效果,使得原本生硬的默认滚动条变得更具视觉吸引力。 **2. 全屏...

    最新jquery.min.js

    该版本主要修复之前两个版本中的一些bug和性能衰退问题,包括: •Deferred:当typeof( target)=='object'时,Deferred.promise( ...•Offset:在BlackBerry5和iOS3上使用会抛出一个错误 •修复了选择器的多个bug

    jquery.mobile-1.4.5.zip

    这个框架是基于流行的JavaScript库jQuery构建的,旨在简化跨平台开发,支持全球主流的移动设备和浏览器,包括iOS、Android、Windows Phone等。`jquery.mobile-1.4.5.zip` 文件包含了jQuery Mobile 1.4.5版本的所有...

    jquery.qrcode.js二维码生成插件并且转换成图片demo

    对于移动端的兼容性,由于iOS设备的安全策略,不能直接右键保存Canvas,但可以通过提供一个下载按钮,通过JavaScript创建一个隐藏的a标签,设置其href为`canvas.toDataURL()`的结果,点击时触发下载。这种方式可以...

    前端项目-jquery.touch.zip

    4. **兼容性**:考虑到不同的触控设备可能存在差异,`jquery.touch`通常会进行一定的兼容性处理,确保在各种浏览器和操作系统上都能正常工作。这包括对iOS、Android、Windows Phone等平台的支持。 5. **性能优化**...

    解决iOS下无法触发focus事件的问题

    开发者想要在点击事件之后,让一个 input 元素获取焦点,但是却发现iOS平台上无法触发键盘。这个问题乍一看起来非常简单,但是却隐藏着非常复杂的原因。 那么,为什么在iOS平台上无法触发focus事件呢?这是因为iOS...

    Android例子源码jquery.mobile做的ios风格的社交系统.zip

    用户只需在页面顶部向下拉动,就能触发加载新内容的请求。 6. 源码学习价值:对于Android开发者来说,这个例子提供了将Web技术应用于移动应用开发的实践案例。通过研究源码,开发者可以学习如何整合HTML、CSS和...

    iOS标签点击效果

    在给定的标题“iOS标签点击效果”和描述“该控件支持自定义文本设置点击事件,改变文字的颜色”中,我们可以深入探讨如何在iOS应用中创建这种功能。 首先,我们需要理解iOS中的标签通常是用UILabel或者自定义视图来...

    jquery-touchslider使用案例(注解版)

    例如,你可能想要在用户点击按钮时触发滑动: ```javascript $('.btn-next').on('click', function() { $('.touchslider').touchslider('next'); }); ``` 通过这种方式,我们可以与`Touchslider`插件进行交互,...

    jQuery.jPlayer.2.4.0

    作为jQuery插件的一员,使用jPlayer可以在你的网页上轻松加入跨平台的音乐和视频。 支持的平台与浏览器 Windows: Firefox, Chrome, Opera, Safari, IE6, IE7, IE8, IE9 OSX: Safari, Firefox, Chrome, Opera iOS: ...

    jquery ios风格提示通知层

    【jQuery iOS风格提示通知层】是一种使用jQuery库创建的用户界面元素,旨在为Web应用程序提供类似于苹果iOS设备上的通知提示效果。这种设计风格通常包括滑入屏幕、具有半透明背景和简洁图标的通知条,用于向用户展示...

    提高ios上click的响应速度

    这段代码中,`&lt;script&gt;`标签引入了FastClick的JS库,`DOMContentLoaded`事件监听器确保在页面内容加载完成后,FastClick被附加到`document.body`上,这样FastClick就能覆盖整个页面的点击事件。 值得注意的是,虽然...

Global site tag (gtag.js) - Google Analytics