当前位置: 移动技术网 > IT编程>移动开发>IOS > 在IOS开发中,动态加载数据点击事件失效问题解决

在IOS开发中,动态加载数据点击事件失效问题解决

2018年09月13日  | 移动技术网IT编程  | 我要评论

如何破解wifi密码,雌雄大挪移,www.avav123com

动态数据的创建与绑定

在实际的开发中,我们常常需要通过动态加载数据,来创建页面的dom,而且给这些新增的元素添加事件也是不可避免的。

而对于动态数据的事件绑定,就需要明白两个概念,就是目标元素和代理元素(委托元素);

(1)目标元素:动态创建的元素,最终click事件需要绑定到该元素

(2)代理元素:动态创建的元素的父级元素,即非动态创建的父元素,比如我们习惯上使用document,body等,但这不是唯一的。

bug描述

如果【目标元素】是可点击的(比如 button、a 标签),此时click事件还是有效的。

如果【代理元素】是document或body,并且【目标元素】是默认不可点击的(如 p, span 等),此时ios上的click事件会失效,无法触发事件;

// 这里使用jquery

$(document).on('click', 'li', function(){

    console.log('点击了li标签');

    })

原因

因为ios认定只有可点击的dom对象才可以触发点击事件,比如<a>和<button>标签,对于非点击对象,需要将其变为可点击对象;

解决方案

(1)将 click 事件直接绑定到目标元素(即 .target ) 上

不能用于动态加载的dom元素

$('.target').click(function(){

    console.log("点击目标元素");

})

(2)将目标元素换成 <a> 或者 <button> 等可点击的元素,

但是需要去除按压效果: 

-webkit-tap-highlight-color: transparent;

(3)给目标元素添加一个空的点击事件: onclick=""

不推荐使用这种行内js的方法

<p class="target" onclick=""><span>点击我!</span></p>

// 样式

.target span {

  pointer-events: none;//禁用元素上绑定的事件

}

(4)把 click 改成 touchend 或 touchstart

注意:需要加上preventdefault 或 return false 来阻止事件冒泡

(5)将 click 元素委托到非 document 或 body 的父级元素上;

注意:委托的元素不可以是动态加载的dom元素;

(6)给目标元素加一条样式规则:

.target{

    cursor: pointer;    //定义鼠标指针悬浮在元素上方显示的鼠标光标

    -webkit-tap-highlight-color: transparent;//去除按压效果

}

最后,webkit内核的有一些特殊的属性,在处理兼容的时候,还是需要多多了解^-^

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网