为了账号安全,请及时绑定邮箱和手机立即绑定

不是要采用事件委托吗?为什么不用这样写:$("ul").on('click',‘li',function(e)

不是要采用事件委托吗?为什么不用这样写:$("ul").on('click',‘li',function(e)

正在回答

5 回答

$("ul").on('click',‘li',function(e){}就拿这个来说吧,如果 你把$("ul")改为$("body")那么整个页面内的里点击都会触发事件(只有点击li),如果on('click',‘li',function(e){}的li去掉那么你点击任何子元素都会触发事件,所以这里的ul和li起的作用更像是确定冒泡范围(ul)和筛选(li)的作用,纯属新手个人理解,不对勿喷

0 回复 有任何疑惑可以回复我~

你可以这么想,我们宿舍有6个人,我是其中一个,有人挑衅了我,也相当于有人挑衅了我们宿舍,也就是冒泡的理念,click了我就是click了我们宿舍,这里有没有li都可以实现,当然其实这里面是有区别的(只是这个细节用不到)

1、有li的情况下,可以这么理解,给li添加click事件,然后把事情委托给ul,这个事件是li的,不是ul的,(没有为ul添加click事件)

2、没有 li的情况,可以这么理解,给ul及ul中的所有元素(包括li)添加click事件,(给ul添加了click事件)

实验方法

在没有li的情况:点击li选项,会提示li时的内容,

                        点击ul(只是ul没有点击到li,也就是点小黑点的前面),会出现ul的内容(包含ul所有的内容)

有li的情况:你执行上面的动作,你会发现第二个动作没有效果,那是因为ul根本就没有click事件


click默认情况下并不冒泡,在这时也没有执行冒泡,只不过你打了就相当于打了我们宿舍也算是冒泡的理念吧,也就是说你单击了ul中的li,难道说你没有单击ul吗?在书上有几个字,书是ul,字是li,你看了字,你难道说你没有看书吗?

4 回复 有任何疑惑可以回复我~
#1

慕妹7508549

on本来就是以委托的方式添加事件
2016-10-27 回复 有任何疑惑可以回复我~

同样新手,不对勿怪。就我愚见,课程里根本没有事件委托。事件也不是在 li 上触发的,是li冒泡到ul触发的,而event.target.Content是当前点击元素的内容。li是源点击对象,所以体现出来的是点什么,显示什么。其实是ul干的活,li署的名。

如果事件委托是这样的: $("ul").on('click',"li",function(e){
           alert('触发的元素是内容是: ' + this.textContent)
        })         this就能实现,这是li自己干的活,自己领功。

5 回复 有任何疑惑可以回复我~
#1

好吃的蛋包饭

是的,非常清楚
2018-08-05 回复 有任何疑惑可以回复我~

加不加li的区别大致就在于,不加li点击ul也会触发,但是加了以后只触发li元素。

1 回复 有任何疑惑可以回复我~

虽然是同样的效果,前面不加li的话点击ul里所有的元素都会被触发,加了li只会让里面的li元素触发

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

不是要采用事件委托吗?为什么不用这样写:$("ul").on('click',‘li',function(e)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信