为了账号安全,请及时绑定邮箱和手机立即绑定
能坚持到现在的都是基友,海内存知己,天涯若比邻,大家加油
分享两个容易忽视的细节:
1.keydown事件第一次触发很多人都知道触发在前同步在后。这只是个猜测,我做了下测试:在回调函数后面添加代码:console.log(1);return false。再次按下按键,console里打印了数据1,但是文本框没有值输入,说明keydown事件在游览器默认行为之前触发。所以大家的猜想是正确的。
2.关于长按按键,keydown事件会不断触发的解释。这是W3C标准的规范,原始设计就是这样。之所以这样设计,有几个考虑:1.为了复合键的操作需求,如ctrl+s。2.为了空格键,方向键等按键长按更具操作性的需求。要避免连续触发可以keydown,keyup连用。
事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。)

相信很多人学到这对冒泡事件会是一头雾水。很多人吐槽老师语文不过关,教学方式奇特。一开始我是反对的,因为我都看得懂。(其实我主要都是自己研究老师写的代码和反复做实验来感受代码的特性,并没多大咬文嚼字,学习文字传递的东西)但是到冒泡这边就有点蒙了,比较抽象,很难通过实验找出特性。网上无意间看到某大佬对冒泡件事的解释,这才发现Aaron老师绝对是个地道的理科生!!!
$(".aaron1").mousemove(function(e) {
$(this).find('p:last').html('移动的X位置:' + (parseInt(e.pageX)-13)+'</br>'+'移动的Y位置:'+ (parseInt(e.pageY)-189))
})

测试二修改了一下,变成定位鼠标在div里面的X/Y坐标位置~
$("li").on('click',function(){
alert('触发的元素是内容是: ' + this.textContent)
})
我习惯用这种方法,冒泡有时候要搞混
【一句话:阻止全部子元素事件冒泡】
$('#elem').on('Aaron', function(event,arg1,arg2) {
alert("自触自定义时间")
});
$('#elem').trigger('Aaron',['参数1','参数2'])

个人理解更像是在动态的给$('#elem')这个对象增加方法。
对象已经实例化后还可以再增加方法,这点不同于其他语言
冒泡现象~感觉是底层没有实现好造成的~

刚百度了一下谷歌浏览器的js引擎是C语言写的,所以冒泡现象因该跟C的继承原理有关

猜想js引擎里面父元素和子元素都是调用的基类指针,所以该指针会调用到父类的方法。

父元素、子元素统一调用基类指针可以省很多事情,大大提高效率,但是带来了冒泡现象

如果js引擎用C++写的估计能够避免冒泡现象,因为C++具有多态性,而C没有多态。
这一节很关键,不然很多新人都会掉坑
bottonName=bottonName||'first' 刚开始没接触过这种类型的变量赋值。看评论之后恍然大悟。
不少人说:在这里keydown的行为是同步行为,事实上并非如此。在按下键盘按键后数值还没有到达文本框而keydown事件已经触发。故达到的值应是按键之前的属性值。
function data(e) { alert(e.data) }
function a() {$("button:eq(2)").click(1111, data) }a();
这段代码会在加载到这里时,开始调用a()函数,为第三个button添加单击事件,并为单击事件的回调函数data()传入一个参数‘1111’
‘1111’这个参数在传入后,会被作为e的初始化值,生成JS事件对象e(event)。所以在data函数中,可以调用事件对象的方法 '.data'获取该事件对象的数据。因为该事件对象e是a()函数里的‘1111’初始化的,所以e调用.data方法获取到的数据也自然是‘1111’
var i = 0;
$(".aaron1 p").mouseover(function(e) {
$(".aaron1 a:first").html('mouseover事件触发次数:' + (++i))
})

var n = 0;
$(".aaron1").mouseover(function() {
$(".aaron1 a:last").html('mouseover冒泡事件触发次数:' + (++n))
})
function a() {
$("button:eq(2)").click(1111, data)
// }
// a();啥意思
课程须知
1、有HTML/CSS基础 2、有JavaScript基础
老师告诉你能学到什么?
1、jQuery的基础语法 2、jQuery事件处理

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消