简短的回答是,实现同一件事的方法不止一种,这取决于具体情况。
第一个代码片段在语义方面做了一些事情:
函数声明非常明确,myHandler
不是普通函数,而是事件处理程序;现在这对您来说可能并不重要,但是一旦您将代码移交给其他人或者您在几个月后回到您的代码中,这将是重要的。
因为它是单独声明的,所以它也显示了myHandler
将被重用的意图。我想会有更多的语句将相同的处理程序应用于其他 jQuery 选择器。
由于#1 和#2,辅助数据不能再以正常方式传递,但也需要通过the 传递Event
。
您自己的代码片段在通用代码和简单性之间做出了妥协;它没有理由爆炸。
回答您的其他问题
我为什么要使用事件?
在很多情况下你不会;以这段代码为例,基于 jQuery 事件处理最常用的特性:
<a href="http://www.example.org">...</a>
$('a').on('click', function(e) {
e.preventDefault();
// do something beautiful
});
在这里,事件e
被传递给点击处理程序,然后当点击链接时,它会阻止浏览器导航到链接。可以通过以下方式完成相同的操作:
$('a').on('click', function() {
// do something beautiful
return false;
});
尽管上面代码的意图不太明显,但它完全不接触事件就做了同样的事情。
事件究竟是为了什么?
它封装了有关各种用户输入的数据,例如按键、单击、拖动等。jQuery 对其进行了概括,并通过数据传递功能对其进行了扩展。也可以看看:Event object
为什么不直接按名称选择元素?
这里没有权威的答案,但是当你this
用来引用被点击的元素(或基于它的选择器来引用父、兄弟等)时,点击处理程序代码变得更加通用和可维护;如果您需要向其他元素添加相同的行为,则无需编写 X 个不同的点击处理程序。