这要求每个元素都定义其 此外,我们无法在处理程序中注册特定于对象的事件,例如 您必须在
由于我们知道所有事件都通过"body",因此传播模型要么冒泡,要么捕获。
因此,我们不应该将所有事件注册到 body,然后检查目标元素以执行操作。因此,只有一个单击处理程序将检查所有单击并根据目标元素执行操作。
这将减少注册事件的数量,就像所有单击事件一样,只有一个注册的处理程序。这种实现有任何问题吗?
根据专家的评论,我认为Having several handlers is better
.
但是我们也可以有一个处理程序。
例如,假设我们要分别处理每个元素上的Click
事件;我们可以通过仅使用一个处理程序来实现它,例如:
<html>
<head>
<script type="text/javascript">
function ClickHandler(e){
e=window.event||null;
var x=e.target.id||null;
alert(x);
switch(x){
case 'refine': //refine Specific Code
break;
case 'html': // Other Stuff
break;
default: e.stopPropagation();
break;
}
}
</script>
</head>
<body OnClick="ClickHandler(event);" id="html">
<select id="refine">
<option class="default" value="0">Please refine...</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
<option value="red">Red</option>
</select>
</body>
</html>
在这里单击<select>
元素将提醒refine
,否则html
。
--但--
缺点:
ID
属性。<form>
OnSubmit
。switch-case
中维护大量代码,这反过来又是一项乏味的工作。这就是我们实现它的方式!