HTML中的onclick
是否与jQuery中的.click()
相同?
显然,从可用性的角度看它们是相同的,但我很好奇浏览器如何处理它们。
答案 0 :(得分:4)
jQuery在幕后使用JavaScript附加事件。
一个重要的区别是jQuery允许使用click()
绑定多个事件,因为您只能使用onclick
附加一个处理程序。这是因为jQuery uses幕后是addEventListener
或attachEvent
,而不是直接绑定到.onclick
。
此外,通过JavaScript(使用jQuery或不使用jQuery)附加处理程序可以促进unobtrusive JavaScript(即不混合JavaScript和HTML),这是一件好事。
答案 1 :(得分:3)
不,不一样。 OnClick
设置DOM元素的属性,其中.click()
添加eventListener。
它们之间的区别在于每个DOM元素一次只能具有一个类型的属性。因此,如果您对元素使用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< = 8具有不同的语法(attchEvent
)。并且您可以unbind一次点击处理程序。 normal JavaScript solution只能分离传递的函数而不是所有函数。
答案 2 :(得分:2)
(注意jQuery是一个JavaScript库,所以如果你有时间的话,你不能做任何你自己无法做的事情......)
jQuery .click()
方法在几个关键方面与onclick
不同。没有特别的顺序:
event
对象,以便您不必担心浏览器之间的(主要)微小差异.addEventListener()
或.attachEvent()
绑定,具体取决于您的浏览器支持的内容,因此,您不必担心差异.onclick
你只能绑定一个处理程序,但是{{1} }}和.addEventListener()
你可以绑定多个处理程序).attachEvent()
或.on()
(或已弃用的.delegate()
)来附加事件,而不是像.live()
那样的快捷方法,则很容易设置事件委派在幕后,所有标准的浏览器事件仍在发生,但jQuery为它们提供了一个包装器,可以完成上述所有操作。当然还有其他一些差异,但我认为上面是最重要的。
从可用性的角度来看,它们显然是相同的
不,他们不是。在你如何使用它们时,jQuery的事件(几乎)与.click()
或.addEventListener()
相同会更准确,但即便如此,如上所述,jQuery为你提供了额外的抽象级别。除了你自己编写代码之外,还可以保存。
答案 3 :(得分:0)
即使在JQuery中.click()
也不一样。它是html中onclick
之上的一段代码。 JQuery允许在普通的html事件之上使用该层将方法绑定到事件。
您可以更改/覆盖.click()
以适应您的需求。例如,当使用移动浏览器或pda等时