分享两个容易忽视的细节:
1.keydown事件第一次触发很多人都知道触发在前同步在后。这只是个猜测,我做了下测试:在回调函数后面添加代码:console.log(1);return false。再次按下按键,console里打印了数据1,但是文本框没有值输入,说明keydown事件在游览器默认行为之前触发。所以大家的猜想是正确的。
2.关于长按按键,keydown事件会不断触发的解释。这是W3C标准的规范,原始设计就是这样。之所以这样设计,有几个考虑:1.为了复合键的操作需求,如ctrl+s。2.为了空格键,方向键等按键长按更具操作性的需求。要避免连续触发可以keydown,keyup连用。
1.keydown事件第一次触发很多人都知道触发在前同步在后。这只是个猜测,我做了下测试:在回调函数后面添加代码:console.log(1);return false。再次按下按键,console里打印了数据1,但是文本框没有值输入,说明keydown事件在游览器默认行为之前触发。所以大家的猜想是正确的。
2.关于长按按键,keydown事件会不断触发的解释。这是W3C标准的规范,原始设计就是这样。之所以这样设计,有几个考虑:1.为了复合键的操作需求,如ctrl+s。2.为了空格键,方向键等按键长按更具操作性的需求。要避免连续触发可以keydown,keyup连用。
2018-03-21
已采纳回答 / 阿阿阿布
$("input:last").focusin('慕课网', function fn(e) { $(this).val(e.data) });首先,因为$("ele").focusin('data','fn'),点击文本框触发焦点事件,'data'传入了数据:“慕课网”储存在focusin件事里面(也就是这里的e),后面的e.data就是读取你传入的数据:“慕课网”这3个中文。val()你应该理解吧,就是把data数据输入到input文本框里。也就是为什么你点...
2018-03-21
事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。)
相信很多人学到这对冒泡事件会是一头雾水。很多人吐槽老师语文不过关,教学方式奇特。一开始我是反对的,因为我都看得懂。(其实我主要都是自己研究老师写的代码和反复做实验来感受代码的特性,并没多大咬文嚼字,学习文字传递的东西)但是到冒泡这边就有点蒙了,比较抽象,很难通过实验找出特性。网上无意间看到某大佬对冒泡件事的解释,这才发现Aaron老师绝对是个地道的理科生!!!
相信很多人学到这对冒泡事件会是一头雾水。很多人吐槽老师语文不过关,教学方式奇特。一开始我是反对的,因为我都看得懂。(其实我主要都是自己研究老师写的代码和反复做实验来感受代码的特性,并没多大咬文嚼字,学习文字传递的东西)但是到冒泡这边就有点蒙了,比较抽象,很难通过实验找出特性。网上无意间看到某大佬对冒泡件事的解释,这才发现Aaron老师绝对是个地道的理科生!!!
2018-03-20
$(".aaron1").mousemove(function(e) {
$(this).find('p:last').html('移动的X位置:' + (parseInt(e.pageX)-13)+'</br>'+'移动的Y位置:'+ (parseInt(e.pageY)-189))
})
测试二修改了一下,变成定位鼠标在div里面的X/Y坐标位置~
$(this).find('p:last').html('移动的X位置:' + (parseInt(e.pageX)-13)+'</br>'+'移动的Y位置:'+ (parseInt(e.pageY)-189))
})
测试二修改了一下,变成定位鼠标在div里面的X/Y坐标位置~
2018-03-19
$("li").on('click',function(){
alert('触发的元素是内容是: ' + this.textContent)
})
我习惯用这种方法,冒泡有时候要搞混
alert('触发的元素是内容是: ' + this.textContent)
})
我习惯用这种方法,冒泡有时候要搞混
2018-03-19
$('#elem').on('Aaron', function(event,arg1,arg2) {
alert("自触自定义时间")
});
$('#elem').trigger('Aaron',['参数1','参数2'])
个人理解更像是在动态的给$('#elem')这个对象增加方法。
对象已经实例化后还可以再增加方法,这点不同于其他语言
alert("自触自定义时间")
});
$('#elem').trigger('Aaron',['参数1','参数2'])
个人理解更像是在动态的给$('#elem')这个对象增加方法。
对象已经实例化后还可以再增加方法,这点不同于其他语言
2018-03-11
冒泡现象~感觉是底层没有实现好造成的~
刚百度了一下谷歌浏览器的js引擎是C语言写的,所以冒泡现象因该跟C的继承原理有关
猜想js引擎里面父元素和子元素都是调用的基类指针,所以该指针会调用到父类的方法。
父元素、子元素统一调用基类指针可以省很多事情,大大提高效率,但是带来了冒泡现象
如果js引擎用C++写的估计能够避免冒泡现象,因为C++具有多态性,而C没有多态。
刚百度了一下谷歌浏览器的js引擎是C语言写的,所以冒泡现象因该跟C的继承原理有关
猜想js引擎里面父元素和子元素都是调用的基类指针,所以该指针会调用到父类的方法。
父元素、子元素统一调用基类指针可以省很多事情,大大提高效率,但是带来了冒泡现象
如果js引擎用C++写的估计能够避免冒泡现象,因为C++具有多态性,而C没有多态。
2018-03-09
bottonName=bottonName||'first' 刚开始没接触过这种类型的变量赋值。看评论之后恍然大悟。
2018-03-07
不少人说:在这里keydown的行为是同步行为,事实上并非如此。在按下键盘按键后数值还没有到达文本框而keydown事件已经触发。故达到的值应是按键之前的属性值。
2018-03-06
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’
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’
2018-03-05
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))
})
$(".aaron1 p").mouseover(function(e) {
$(".aaron1 a:first").html('mouseover事件触发次数:' + (++i))
})
var n = 0;
$(".aaron1").mouseover(function() {
$(".aaron1 a:last").html('mouseover冒泡事件触发次数:' + (++n))
})
2018-03-05
最新回答 / 慕桂英341702
等同于var n = 0;$(".right p:first").mouseover('data = 慕课网',function(e){ $(".right a").html('mouseover事件触发次数:' + (++n) + '<br/> 传入数据为 :'+ e.data) })鼠标移动到class为div下面的第一个p上触发的事件'data = 慕课网'为所传参数
2018-03-05