on 和 event的问题
来源:7-2 揭秘案例bug值解决第三个bug
WittChen
2020-05-12 17:27:28
老师您好:
问题一、如果采用.on("click", "a", function(){})这样写是可以捕捉到动态生成的a标签的,但是还有种写法
.on({})这里面穿的是一个对象,这样怎么捕捉动态生成的a标签呢,直接a.on({})吗,但是感觉也不对。
问题二、.on("click", "a",data, function(){}),这里还有个data参数,我记得不错老师直接说是event,把event直接放在括号中,但是根据我之前学习javascript的理解,event可以省略不需要写,那么这个data就不应是event,可以使其他的值,我说的对吗?
问题三、这个event在原生的JavaScript里应该是window下的一个对象,所以是全局的变量,因此可以直接访问,我要问的是在jQuery中event和window下的event一样吗,不一样的话应该也是这个jQuery 的一个属性,应该也能直接调用。
2回答
同学你好,问题解答如下:
1、用对象的形式绑定事件,是没有办法动态捕获元素的
2、data是额外传入的参数,可以通过event.data获取到。例如

3、jquery中的event也是全局的,可以不写参数直接使用。但是如果传入额外参数data的话,event是需要写的,否则获取不到为undefined。例如


4、$(document).on("click", "a", function(){})这种写法是事件委托,是在document上绑定的,但是是通过a触发的。例如,p元素中有a,在p上绑定

点击a触发结果

可以看到先执行a的点击事件,然后冒泡到p元素上,然后触发p的点击事件。
祝学习愉快!
WittChen
提问者
2020-05-12
再补充一个问题:
问题四、$(document).on("click", "a", function(){}),像这种绑定事件,会一起把document也绑定了吗?
相似问题