1.jquery给动态添加的元素添加事件
在jquery推出新版本,使用.on()以前,我们会用.live()来为动态添加的代码绑定事件,但是现在jQuery用.on()替代了.live()
先看个.live()实例
$("a").live("click", function () { $("#111").append("ok"); });
再看一个.on()的实例
$("body").on("click","a", function () { $("#111").append("ok"); });
其中,.live()的用法跟1.7之前的.on()类似,而1.9的.on()方法是on(events,[selector],[data],fn) ,可以指定绑定在哪个父节点上,在后面的选择器内写上要出发的元素选择器
live原理:
.live()则是通过事件委托的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。
2.event.originalEvent JQuery
今天在使用jquery的e.pageX时,发现其获得的值一直是undefined,百度了一下,换成了e.originalEvent.pageX就好了,问题是解决了,但是不知道原因,于是在Stack Overflow上搜了一下,在这里给大家翻译一下。
event.originalEvent是原生的js event,如果浏览器是兼容或者是在可触的设备上使用,API通常是暴漏给event.originalEvent。简单来说,event.originalEvent会根据触发时间类型和浏览器运行环境表现不一。
举个例子:
var files = event.dataTransfer.files; // Gives error: trying to get property of undefined var files = event.originalEvent.dataTransfer.files; // Works fine
jquery没有封装原生event对象的一些API,就行例子中的files。所以在这种时候我们需要使用event.originalEvent。
3.触摸事件
三种在规范中列出并获得跨移动设备广泛实现的基本触摸事件:
1. touchstart :手指放在一个DOM元素上。
2. touchmove :手指拖曳一个DOM元素。
3. touchend :手指从一个DOM元素上移开。
每个触摸事件都包括了三个触摸列表:
1. touches :当前位于屏幕上的所有手指的一个列表。
2. targetTouches :位于当前DOM元素上的手指的一个列表。
3. changedTouches :涉及当前事件的手指的一个列表。
例如,在一个touchend事件中,这就会是移开的手指。
这些列表由包含了触摸信息的对象组成:
1. identifier :一个数值,唯一标识触摸会话(touch session)中的当前手指。
2. target :DOM元素,是动作所针对的目标。
3. 客户/页面/屏幕坐标 :动作在屏幕上发生的位置。
4. 半径坐标和 rotationAngle :画出大约相当于手指形状的椭圆形。