记一次事件委托在 ios 下的兼容 bug
项目中碰到的兼容类 bug,记录一二。
页面上有几个同类型的控件,点击它们会触发一些事件,很显然,事件委托优于批量绑定。为了图方便,我将 click 事件绑定到了 document.body 上(绑定在 document 上也是一样),在安卓机上反应良好,ios 上居然不会触发点击事件!
试着将事件绑定到了控件的父级元素,问题消失了。
事实上,当使用事件委托给一个元素添加 click 事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效。如果是可点击的(比如 button、a 标签),此时 click 事件还是有效的,这点要特别注意。
- 使用原生的支持click冒泡到document的元素,例如
a
和button
- 委托事件的时候,委托到body以下的元素上面
解决办法
解决办法有 4 种可供选择:
- 将
click
事件直接绑定到目标元素(即.target
)上 - 将目标元素换成
<a>
或者button
等可点击的元素 - 将
click
事件委托到非document
或body
的父级元素上 - 给目标元素加一条样式规则
cursor: pointer;
推荐后两种。从解决办法来看,推测在 safari 中,不可点击的元素的点击事件不会冒泡到父级元素。通过添加 cursor: pointer
使得元素变成了可点击的了。
相关推荐
jQuery Mobile是jQuery项目的一个分支,专注于提供一套全面的、跨平台的触控友好的UI组件,适用于移动设备和桌面浏览器。它使用单一代码库支持多种移动操作系统,如iOS、Android和Windows Phone。jQuery Mobile通过...
这个框架支持多种设备和浏览器,包括iOS、Android、BlackBerry等主流移动平台,以及桌面浏览器,实现了跨平台的一致性。 **jQuery.mobile-1.0.1.js与jQuery.mobile-1.0.1.min.js** 这两个JavaScript文件是jQuery ...
开发者想要在点击事件之后,让一个 input 元素获取焦点,但是却发现iOS平台上无法触发键盘。这个问题乍一看起来非常简单,但是却隐藏着非常复杂的原因。 那么,为什么在iOS平台上无法触发focus事件呢?这是因为iOS...
值得注意的是,jQuery.media依赖于Adobe Flash Player,因此在某些不支持Flash的设备(如iOS设备)上可能无法正常工作。此外,随着HTML5技术的发展,Flash已经逐渐被淘汰,所以对于现代浏览器,你可能需要考虑使用...
为了适应触控设备,jQuery Mobile 提供了自定义的触摸事件,如`vclick`、`taphold`等,以解决浏览器原生事件在移动设备上的延迟问题。这些优化在`jquery.mobile.structure-1.4.5.css`中有所体现,确保了用户界面的...
1. 兼容性测试:虽然jQuery.nicescroll具有较好的兼容性,但在实际应用中仍需进行充分的浏览器和设备测试,确保在不同环境下都能正常工作。 2. 性能考虑:在大型或高性能要求的项目中,需注意滚动条的渲染性能,...
插件描述:iosSlider iosSlider是一个可定制的、跨浏览器幻灯片jQuery插件。设计用于作为内容滑块、旋转木马、滚动网站旗帜或者图片库。其效果类似于ios的横向滚屏效果.参考示例:...
在iOS开发中,UI设计和交互是至关重要的部分,而UILabel作为展示文本的基本元素,通常不直接支持点击事件。然而,通过一些技巧,我们可以让UILabel响应用户的点击操作,实现所谓的"点击标签触发事件"。本篇文章将...
对于移动端的兼容性,由于iOS设备的安全策略,不能直接右键保存Canvas,但可以通过提供一个下载按钮,通过JavaScript创建一个隐藏的a标签,设置其href为`canvas.toDataURL()`的结果,点击时触发下载。这种方式可以...
jQuery.nicescroll 的核心特性就是模拟了苹果设备上的滚动条样式,这种简洁而优雅的设计深受用户喜爱。它提供了透明背景、细长的滑块以及平滑的滚动效果,使得原本生硬的默认滚动条变得更具视觉吸引力。 **2. 全屏...
该版本主要修复之前两个版本中的一些bug和性能衰退问题,包括: •Deferred:当typeof( target)=='object'时,Deferred.promise( ...•Offset:在BlackBerry5和iOS3上使用会抛出一个错误 •修复了选择器的多个bug
这个框架是基于流行的JavaScript库jQuery构建的,旨在简化跨平台开发,支持全球主流的移动设备和浏览器,包括iOS、Android、Windows Phone等。`jquery.mobile-1.4.5.zip` 文件包含了jQuery Mobile 1.4.5版本的所有...
4. **兼容性**:考虑到不同的触控设备可能存在差异,`jquery.touch`通常会进行一定的兼容性处理,确保在各种浏览器和操作系统上都能正常工作。这包括对iOS、Android、Windows Phone等平台的支持。 5. **性能优化**...
用户只需在页面顶部向下拉动,就能触发加载新内容的请求。 6. 源码学习价值:对于Android开发者来说,这个例子提供了将Web技术应用于移动应用开发的实践案例。通过研究源码,开发者可以学习如何整合HTML、CSS和...
在给定的标题“iOS标签点击效果”和描述“该控件支持自定义文本设置点击事件,改变文字的颜色”中,我们可以深入探讨如何在iOS应用中创建这种功能。 首先,我们需要理解iOS中的标签通常是用UILabel或者自定义视图来...
例如,你可能想要在用户点击按钮时触发滑动: ```javascript $('.btn-next').on('click', function() { $('.touchslider').touchslider('next'); }); ``` 通过这种方式,我们可以与`Touchslider`插件进行交互,...
作为jQuery插件的一员,使用jPlayer可以在你的网页上轻松加入跨平台的音乐和视频。 支持的平台与浏览器 Windows: Firefox, Chrome, Opera, Safari, IE6, IE7, IE8, IE9 OSX: Safari, Firefox, Chrome, Opera iOS: ...
【jQuery iOS风格提示通知层】是一种使用jQuery库创建的用户界面元素,旨在为Web应用程序提供类似于苹果iOS设备上的通知提示效果。这种设计风格通常包括滑入屏幕、具有半透明背景和简洁图标的通知条,用于向用户展示...
这段代码中,`<script>`标签引入了FastClick的JS库,`DOMContentLoaded`事件监听器确保在页面内容加载完成后,FastClick被附加到`document.body`上,这样FastClick就能覆盖整个页面的点击事件。 值得注意的是,虽然...