Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
Javascript 事件侦听器是否与html事件相同?_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 事件侦听器是否与html事件相同?

Javascript 事件侦听器是否与html事件相同?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,HTML中的onclick是否与jQuery中的相同。单击() 显然,从可用性的角度来看,它们是相同的,但我很好奇浏览器是如何处理它们的 jQuery在幕后使用JavaScript附加事件 一个重要的区别是,jQuery允许使用click()绑定多个事件,其中您只能使用onclick附加一个处理程序。这是因为addEventListener或attachEvent都是在幕后进行的,而不是直接绑定到。onclick 此外,通过JavaScript(使用jQuery或不使用jQuery)附加处理程序

HTML中的
onclick
是否与jQuery中的
相同。单击()


显然,从可用性的角度来看,它们是相同的,但我很好奇浏览器是如何处理它们的

jQuery在幕后使用JavaScript附加事件

一个重要的区别是,jQuery允许使用
click()
绑定多个事件,其中您只能使用
onclick
附加一个处理程序。这是因为
addEventListener
attachEvent
都是在幕后进行的,而不是直接绑定到
。onclick

此外,通过JavaScript(使用jQuery或不使用jQuery)附加处理程序可以提升(即不混合JavaScript和HTML),这是一件好事。

即使在jQuery中,
.click()
也不一样。它是html中
onclick
上方的一段代码。JQuery允许在普通html事件之上使用此层将方法绑定到事件


您可以更改/覆盖
。单击()
以适应您的需要。例如,当使用移动浏览器或pda等时。

不,这是不同的
OnClick
设置DOM元素的属性,其中
。单击()
添加eventListener

它们之间的区别在于每个DOM元素一次只能有一个类型的on属性。因此,如果在一个元素上使用
onClick=
两次,则只有最后添加的元素获胜,第一个元素将被覆盖

这将始终警告2,因为第一个附件将被覆盖:

myDiv.onclick = function(){alert('1')} 
myDiv.onclick = function(){alert('2')}
使用
.click()
.addEventListener('click',myFunction)
,可以添加任意数量的函数。因此,以下内容将向1和2发出警报:

myDiv.click(function(){alert('1')}) 
myDiv.click(function(){alert('2')})
jquerys
.click()
.addEventListener()
之间的区别在于,jquery解决方案可以在所有浏览器中工作,因为IE(注意jquery是一个JavaScript库,所以如果有时间,你不能自己在JavaScript中做任何事情…)

jQuery
.click()
方法在几个关键方面与
onclick
不同。无特定顺序:

  • jQuery努力规范化
    事件
    对象,这样您就不必担心浏览器之间(大部分)的细微差异
  • jQuery将事件绑定到
    .addEventListener()
    .attachEvent()
    ,这取决于浏览器支持的内容,因此,您也不必担心差异
  • jQuery保证在为同一元素和事件绑定了多个处理程序的情况下,它们将按照附加的顺序运行(注意,使用
    .onclick
    只能绑定一个处理程序,但使用
    .addEventListener()
    .attachEvent()
    可以绑定多个处理程序)
  • 如果使用jQuery的
    .on()
    .delegate()
    (或不推荐使用的
    .live()
    )来附加事件,而不是像
    .click()
    这样的快捷方式,则可以很容易地设置事件委派
在幕后,所有标准浏览器事件仍在发生,但jQuery为它们提供了一个包装器,以实现上述所有操作。当然还有其他一些不同之处,但我认为以上是最重要的

显然,从可用性的角度来看,它们是相同的


不,他们不是。更准确的说法是,jQuery的事件(几乎)与
.addEventListener()
.attachEvent()
在如何使用它们方面是相同的,但即使如此,jQuery也为您提供了额外的抽象级别,使您无需自己编写所有代码。

您应该看到jQuery
。单击()
作为某种API调用,确保您的浏览器获得它们。在本例中,它们的处理方式是相同的(@matt正确地提到了多个事件),但这不是给定的,因为您让jquery处理事件。将来可能会有所不同?所以它们是在不同的抽象层次上。我认为你的意思是“不引人注目”而不是“不妨碍”。问题并不是说在html中是否内联使用
onclick
;也许devnill的意思是形式
someElement.onclick=function(){}-这不是也很低调吗?(我承认OP的短语“inHTML”可以理解为内联的意思,但我认为我们不能假设它。)