为了账号安全,请及时绑定邮箱和手机立即绑定
mouseover 事件的一个替代是mouseenter,区别是对事件冒泡的处理:mouseenter只会在绑定对象上触发,而mouseover后代节点也会导致事件触发
第三个例子这样写可能容易理解一点
$("button:eq(2)").click(1111, function(e){
alert(e.data);
})
不知道那些说看不懂的,是个怎么回事。
e.target.textContent == this.textContent
mouseover和mousemove,有什么区别,,,
一楼的评论说反了,event.target是给哪个元素绑定事件,是不变的。this则是当前触发事件的元素。
所以event.target是ul ,this是li
事件委托原理:
事件委托就是利用事件冒泡原理实现的!
事件冒泡:就是事件从最深节点开始,然后逐步向上传播事件;
例:页面上有一个节点树,div > ul > li > a
比如给最里面的a 加一个click 事件,那么事件就会一层一层的往外执行,执行顺序 a > li > ul > div, 有这样一个机制,当我们给最外层的div 添加点击事件,那么里面的ul , li , a 做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托他们父集代为执行事件
为什么要用事件委托?事件委托有什么好处?

一般来说,dom是需要有事件处理程序的,我们会直接给他事件处理程序就好了,那么如果是很多dom元素需要添加事件处理呢?
比如 100个li,每个li 都有相同的click点击事件,可能我们会有for循环的方法,来遍历所有li,然后为每个li添加绑定事件。
这么做毫无疑问对性能有很大的影响;
在js中,访问dom次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间

如果采用事件委托,就会将所有的操作放到js程序里面,与dom的操作就只交互一次,这样减少了dom交互次数,性能就会提升;
借鉴其他大牛的一个例子:收快递例子

有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。

两层意思:
1.现在委托前台的同事是可以签收的,即程序中的现有的dom节点是有事件的;
2.新员工也是可以被前台mm代为签收的,即程序中新添加的dom节点也是有事件的;
老师这么不喜欢打;啊
不太理解e.target的可以把:e.target换成this。
http://libs.baidu.com/jquery/1.9.1/jquery.js
还有个获取索引位置的也比较有用:$(event.target).index();
你们可以把e.target换成$(this)看看 结果输出的的是underfined说明function中的this是指绑定触发的对象ul event 是实际触发事件的元素
老师讲的不错 $('elem').on('click','elem2',function(){}) 给元素elem绑定点击事件 原本该事件应该由elem去触发 现在由于第二层seletor的作用下委托elem2去做
课程须知
1、有HTML/CSS基础 2、有JavaScript基础
老师告诉你能学到什么?
1、jQuery的基础语法 2、jQuery事件处理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消