在我的代码中我有这个:
<script type="text/javascript">
$(document).ready(function (e) {
$('#EventCreate').click(function (e) {
location.href = '@Url.Action("Create", "AEvents")';
});
});
</script>
<button id="EventCreate" type="button" class="btn btn-info" style="float:right;">Create New Event</button>
现在这完美无缺,但我的任务是了解其工作原理的各个方面。
我已经做了一些阅读here,但还没有解决这个问题。此外,在参考文献中,提供的所有示例都没有处理程序。
我也尝试过调试,看看e
有什么,但运气不好。
我的问题是为什么要e
?我知道e
是一个事件处理程序,但是这会起作用:
<script type="text/javascript">
$(document).ready(function (/* no event handler */) {
$('#EventCreate').click(function (/* no event handler */) {
location.href = '@Url.Action("Create", "AEvents")';
});
});
</script>
非常感谢任何帮助/解释。
答案 0 :(得分:3)
e
/ event
/ evt
实际上是一个Event Object, NOT 一个事件处理程序。这是传递给事件处理程序/侦听器回调函数的参数。
这表示事件发生时的状态,并为实际事件提供有价值的上下文。只有在需要事件本身的上下文数据时才需要包含。否则它可以省略,因为你可以用JavaScript中的大多数不需要的参数。
例如,采用一个简单的输入处理程序:
document
.getElementById('example')
.addEventListener('change', onChange, false);
function onChange(e) {
console.log(e.target.value); // value of input
}
<label>Example input</label>
<input type="text" id="example" placeholder="Example."/>
将侦听器绑定到change
事件时,可以访问作为事件对象的e
参数。使用该对象,您可以在更改后读取输入的当前值。
答案 1 :(得分:2)
e
是传递给匿名回调函数的event object。
非强制性在参数列表中明确说明它,您的代码将完全相同(假设您没有尝试引用它)。
如果您愿意,您甚至可以通过arguments
数组(arguments[0]
)访问它,但在这种情况下,这将是草率的。
重点是无论是否将其包含在函数参数中,都会将其传递给函数。