Jquery帮我分析发生的事情:mouseover / mouseout ok但不hover/取消hover
我一直在研究一些代码,我在hover/unhover
上触发代码。 然后我决定在focus/blur
触发相同的代码。 通常只有hover/unhover
,我会使用通常的hover comma no unhover
格式。 但这一次,因为我试图添加focus/blur
,我不得不使用绑定并使用this.bind
与第二部分,如下所示:
$.fn.gogogo = function (msg) { $(this).bind("hover focus", function(){ $("#screen").html(msg).show(); }); $(this).bind("unhover blur", function(){ $("#screen").html("").hide(); }); }
问题在于,无论我做了什么, hover/unhover
开始都没有。 我不得不像这样恢复mouseover/mouseout
。 除了单词hover/unhover
与mouseover/mouseout
之外,代码是相同的
$.fn.gogogo = function (msg) { $(this).bind("mouseover focus", function(){ $("#screen").html(msg).show(); }); $(this).bind("mouseout blur", function(){ $("#screen").html("").hide(); }); }
我认为hover / unhover只是mouseover / mouseout的jquery抽象。 为什么这里的行为有所不同: hover/unhover
会破坏我的代码,而mouseover/mouseout
还可以?
谢谢。
没有叫做hover
事件。
hover
方法是一种便捷方法,它将事件处理程序绑定到mouseenter
和mouseleave
事件。
如果你打开jQuery源代码,你会发现hover
方法的定义如下:
hover: function(fnOver, fnOut) { return this.mouseenter(fnOver).mouseleave(fnOut); },
您应该绑定到mouseenter
和mouseleave
事件。
编辑 : mouseenter
和mouseover
之间的区别在于mouseenter
(和mouseleave
)不会冒泡。 这意味着如果鼠标移动到您绑定的元素中的任何元素(这可能不是您想要的),您将获得mouseover
事件,而如果鼠标输入该元素本身,您将只获得鼠标中心事件。 有关示例,请参阅文档 。
没有“hover”事件。 这只是一个方便的例程。