理解jQuery中的处理程序

时间:2016-06-16 13:26:28

标签: javascript jquery

在我的代码中我有这个:

<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>

非常感谢任何帮助/解释。

2 个答案:

答案 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])访问它,但在这种情况下,这将是草率的。

重点是无论是否将其包含在函数参数中,都会将其传递给函数。