Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
事件绑定-jQuery与Javascript_Javascript_Jquery - Fatal编程技术网

事件绑定-jQuery与Javascript

事件绑定-jQuery与Javascript,javascript,jquery,Javascript,Jquery,使用 $("#element").click(function() { alert("test"); }); 及 在性能、功能或其他方面有什么不同吗?当我可以简单地使用onclick属性时,我应该使用jQuery方式吗? 及 使用框架绑定javascript事件也总是更好的,因为如果您不这样做,您需要自己处理跨浏览器的事情(attachEvent.。jQuery的单击(以及大多数其他库的事件抽象)使用标准或MSHTML专有当addEventListener不可用时(后来被其他浏览器复制,

使用

$("#element").click(function() { alert("test"); });


在性能、功能或其他方面有什么不同吗?当我可以简单地使用
onclick
属性时,我应该使用jQuery方式吗?


使用框架绑定javascript事件也总是更好的,因为如果您不这样做,您需要自己处理跨浏览器的事情(attachEvent.。

jQuery的
单击(以及大多数其他库的事件抽象)使用标准或MSHTML专有当
addEventListener
不可用时(后来被其他浏览器复制,如Opera)

如果既不存在
addEventListener
,也不存在
attachEvent
(就像一些古老的浏览器一样),jQuery将什么也不做(从1.4a2开始)

onclick=“…”第二个示例中的
称为,在HTML 4.01中定义。此类事件属性的值成为事件处理程序的函数体。当事件发生时,此处理程序函数将以
事件作为第一个参数调用;函数作用域链还将包括一些元素的祖先和元素本身如果

内在事件属性的好处是更广泛的浏览器支持,并且可以说更好的性能。我记得看到过事件属性的测试,与通过
addEventListener
/
attachEvent
初始化的测试相比,内存消耗要小得多。我当时找不到这些测试e时刻

通过避免
attachEvent
,自然也可以避免IE中的内存泄漏。大多数流行的Javascript库实际上在其事件抽象中创建循环引用,然后被迫在IE中执行页面卸载清理。显然,当你避免依赖
att的事件抽象时,这些问题就会消失achEvent

然而,事件属性的缺点是缺乏可重用性打破关注点的分离标记污染(影响文档的大小和可维护性)。请记住,事件属性的逻辑会不断传输到客户端,而不是作为外部脚本的一部分下载一次并缓存。此外,还可能在扩展范围时出错


除非绝对必要,否则我建议避免使用事件属性。

说“使用框架绑定JavaScript事件总是更好”有点教条-如果你只是为了这个目的而使用jQuery这样的通用库,那么你就是在强迫你的用户下载他们不需要的东西。此外,绑定事件并不是那么难。我也不会说使用“不引人注目”的方式总是更好。另请参阅ala上的[Behavior Separation][1]文章[1]:您还可以结合这些实践,即使用document.getElementById(“theElement”).onclick=theFunction;,在单独的JavaScript文件中的window.onload函数中。然后,您不必检查addEventListener或attachEvent是否受支持,您的JavaScript是否以不引人注目的方式绑定。或者出于某种原因,这是一种非常糟糕的做法吗?
<div id="element" onclick="alert('test');"></div>