W3G*_*eek 9 javascript events event-handling javascript-events
我正在学习如何在JavaScript中操作事件,我想知道"为什么在使用事件处理时必须将事件对象作为参数(参数)传递给函数?"
这是我所说的一个例子:
<script type="text/javascript">
document.getElementById('button_1').onclick = (function (event) {
alert("The event is: " + "on" + event.type);
});
</script>
Run Code Online (Sandbox Code Playgroud)
我写了上面的代码,我非常了解它的作用.我只是不明白整个(事件)传递.我认为这是一种为button_1.onclick事件处理程序分配匿名函数的方法.事件处理程序在分配之前是否尝试传入事件或者?...我很难理解这一点.如果有人可以请我澄清一下,我将不胜感激.
[我尝试在Google上搜索,但发现了非常复杂的解释和示例.只有简单到中间的解释才有帮助.] =)
非常感谢你.
Sam*_*son 13
即使您没有提供姓名,该活动也始终存在:
$(".foo").on("click", function(){
alert( arguments[0].type );
});
Run Code Online (Sandbox Code Playgroud)
这与说这个是一样的:
$(".foo").on("click", function(event){
alert( event.type );
});
Run Code Online (Sandbox Code Playgroud)
事件对象已经传递给您的回调(无论您是否为其提供名称),如果您愿意,可以选择不使用它.例如,如果我们查看jQuery onClick方法:
$(".foo").on("click", function(){
/* Do stuff */
});
Run Code Online (Sandbox Code Playgroud)
你会注意到我的回调中没有引用任何事件对象.我没有要求.但是,如果我想使用它,出于任何目的,我应该给它一个名字:
$(".foo").on("click", function(myEvent){
myEvent.preventDefault();
myEvent.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
既然我已经授予自己访问事件详细信息的权限,我可以阻止事件导致的默认行为,并且我也可以阻止事件将DOM冒泡到其他元素.
假设我们想要监听元素上的点击事件:
$("#bigSquare").on("click", function(event){
/* Do something */
});
Run Code Online (Sandbox Code Playgroud)
单击元素本身或其任何子元素时,会在元素上发生单击事件.现在假设这个元素有两个孩子:
<div id="bigSquare">
<div id="redSquare"></div>
<div id="blueSquare"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
单击任何一个,大方块,红色方块或蓝色方块将导致大方块上的"单击"事件 - 在它导致点击事件后,您首先点击任何元素(事件冒泡DOM).
我们可以通过事件本身确定哪个元素是任何点击事件中的目标:
$("#bigSquare").on("click", function(event){
alert( event.target.id );
});
Run Code Online (Sandbox Code Playgroud)
请注意我们如何访问引发事件的目标的ID.如果你点击红色方块,当那个事件冒泡到大方块时,我们会看到警告"redSquare".蓝色方块也是如此.如果你点击它,事件将冒泡到大广场,我们将看到警告"blueSquare".
您可以通过以下演示在线测试:http://jsbin.com/ejekim/edit#javascript,live
尝试单击橙色,红色或蓝色方块以查看提醒的内容.
| 归档时间: |
|
| 查看次数: |
5145 次 |
| 最近记录: |