代码理解问题
<body> <input id="a"> <input id="b"> <script type="text/javascript" src="jquery-3.3.1.js"></script> <script type="text/javascript"> function sum(e,a,b){ console.log(e); // 运行显示event对象 console.log(a);// undefined console.log(a);// undefined } $("#a").keypress(function(e,a,b){ console.log(e); // 运行显示event对象 console.log(a);// undefined console.log(a);// undefined }) $("#b").keypress(sum); </script> </body>
如上代码,,2个文本框,分别设置 keyPress函数, 一个绑定 匿名函数 一个绑定带参函数
问题
我知道 keyPress 会产生 event 对象, 但调用 keyPress函数 是怎么自动将 event对象 传入 我用作参数 的函数 的参数 里面去的?? 即 event对象 如何强制自动传入到 上述代码 第一个形参e 中?? 里面到底是怎么回事??
正在回答
同学你好,JQuery中的e是把javascript中的Event做了封装,实现多浏览器兼容。具体怎么传,底层如何实现的这里老师也不是很清楚,同学目前可以先记住。关于前端内容,同学不需要了解的很详细。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
我特别测试了倒数第三行代码 %1% $("#b").keypress(sum)
若改为 %2% $("#b").keypress(sum)())
通过观察控制台的输出, 好像明白了点,%1%传给keypress的是 sum的函数入口
然后 #b控件绑定了 keypress函数,每次运行keypress函数,它都会找到sum函数进行操作
假如传的是 sum()自然keypress函数得到的是sum的返回值,自然无法正常运行
自己理解加深了,但问题依旧,keypress到底是怎么将 event对象传入我自定义的sum函数的?
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星