正在回答
同学你好,问题解答如下:
1. click事件是添加在“.left-item”的父元素“menu-inner”上,但是实际触发该事件,是通过点击“.left-item”,即点击“.left-item”时,事件会往上冒泡,冒到父元素“menu-inner”时,发现它绑定了click事件,所以就执行了“menu-inner”的事件处理程序。
对于事件委托和冒泡,建议同学花点时间,再复习一下该章节:https://class.imooc.com/lesson/777#mid=19550,这样有助于同学理解。
2. 在jquery的事件委托中,e.currentTarget指的是实际触发事件的元素,该点和原生js不同,如下:
对于该点,同学不要纠结,直接打印看一下e.currentTarget指的是谁就可以了。
祝学习愉快!
同学你好,问题解答如下:
1. “$('.menu-inner').on('click', '.left-item', function(e){)) ”和“
$('.left-item').on('click', function(e){})”这两种方式都能实现为“.left-item”绑定事件,但是二者略有不同,区别如下:
这种写法“$('.menu-inner').on('click', '.left-item', function(e){)) ”是将click绑定在了“.left-item”的父元素'.menu-inner'上,利用事件冒泡的原理,间接的实现了为'.menu-inner' 中的子元素“.left-item”绑定事件。
而“$('.left-item').on('click', function(e){})”是直接为页面上所有'.left-item'绑定点击事件(也就是另一位老师所表达的意思:没有限制父级)。
2. 同学疑惑的点在于为谁绑定事件,从原理上讲,事件委托是将事件绑定在父级上,即“$('.menu-inner').on('click', '.left-item', function(e){)) ”这句代码是给“.menu-inner”绑定click事件,但是实际触发点击事件的是“.left-item”,所以通常会直接说为“.left-item”绑定事件。
祝学习愉快!
同学你好,这两张图中的$target都是指左侧菜单里的元素:
先看initContentList这个方法中的$target,如下:
可以打印看一下:
即:initContentList方法中,通过遍历,为左侧每一个“left-item”都绑定了它们对应的数据。
再看addClick()方法中的$target:
在addClick()方法中,采用的是事件委托的方式,一次性的为每一个“left-item”都绑定上了点击事件,如下:
点击事件触发时,$target指的是触发事件的那个“left-item”,可以打印看一下:
所以两张图上的$target都是指的左侧的“left-item”,同学可以通过打印,自己验证一下。
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星