看到这张照片:
这是一个错误还是标准?
PS:args之后的mouseover只是一个标签。
$ ->
$('.bigger-on-hover').hover (event) ->
console.log 'args'
console.log arguments
console.log @
window.x = arguments
window.y = @
console.log 'args'
console.log 'mouseover'
console.log event.type
答案 0 :(得分:1)
mouseenter仅在Internet Explorer中,但jQuery在其他浏览器中模仿它。
您的event
实际上是jQuery事件,因此其类型为mouseenter
。
要查看原生事件,请使用event.originalEvent
。您可以使用console.log(event.originalEvent.type)
查看其类型。在非IE中,该类型为mouseover
。
jQuery听了那个鼠标悬停事件,当它听到它时,它检查鼠标指针是否已经在该元素上,发现它不是,然后触发了一个jQuery mouseenter事件。然后它将事件更改回mouseover
,以便在冒泡时产生正常效果。
当您使用.hover()
时,jQuery会侦听这些进入和离开事件以触发和关闭它。
答案 1 :(得分:1)
jQuery.fn.hover
是别名:
jQuery.fn.extend({
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
这些mouseenter
和mouseleave
方法本身也是just shortcuts special treatment。
console.log
打印的对象不是冻结快照。如果在展开对象之前修改了对象,则修改后的版本将记录到控制台。这就是这里发生的事情。