小编典典

jQuery.click() 与 onClick

all

我有一个巨大的 jQuery 应用程序,我使用以下两种方法来处理点击事件。

第一种方法

HTML

<div id="myDiv">Some Content</div>

jQuery

$('#myDiv').click(function(){
    //Some code
});

第二种方法

HTML

<div id="myDiv" onClick="divFunction()">Some Content</div>

JavaScript 函数调用

function divFunction(){
    //Some code
}

我在我的应用程序中使用第一种或第二种方法。哪一个更好?性能更好?和标准?


阅读 82

收藏
2022-03-06

共1个答案

小编典典

使用
更好$('#myDiv').click(function(){,因为它遵循标准事件注册模型。(jQuery内部使用and
)。
addEventListenerattachEvent

基本上以现代方式注册事件是处理事件的不显眼的方式。此外,要为目标注册多个事件侦听器,您可以addEventListener()为同一个目标调用。

var myEl = document.getElementById('myelement');

myEl.addEventListener('click', function() {
    alert('Hello world');
}, false);

myEl.addEventListener('click', function() {
    alert('Hello world again!!!');
}, false);

http://jsfiddle.net/aj55x/1/

为什么要使用 addEventListener? (来自 MDN)

addEventListener 是注册 W3C DOM 中指定的事件侦听器的方法。它的好处如下:

  • 它允许为事件添加多个处理程序。这对于即使使用其他库/扩展也需要正常工作的 DHTML 库或 Mozilla 扩展特别有用。
  • 当侦听器被激活时,它可以让您更细粒度地控制阶段(捕获与冒泡)
  • 它适用于任何 DOM 元素,而不仅仅是 HTML 元素。

更多关于现代活动注册 ->
http://www.quirksmode.org/js/events_advanced.html

其他方法如设置HTML 属性,例如:

<button onclick="alert('Hello world!')">

DOM 元素属性,例如:

myEl.onclick = function(event){alert('Hello world');};

很旧,它们很容易被覆盖。

__应避免使用 HTML 属性,因为它会使标记更大且可读性更低。 对内容/结构和行为的关注没有很好地分开,这使得 bug 更难找到。

DOM 元素属性 方法的问题是每个事件只能将一个事件处理程序绑定到一个元素。

更多关于传统事件处理 ->
http://www.quirksmode.org/js/events_tradmod.html

MDN 参考:https ://developer.mozilla.org/en-
US/docs/DOM/event

2022-03-06