jQuery函数.on适用于1.8.3,但不适用于1.9.1

jQuery function .on works in 1.8.3 but not in 1.9.1

本文关键字:适用于 不适用 函数 on jQuery      更新时间:2023-09-26

我有一个函数可以与jQuery 1.8.3一起使用,但当我升级到1.9.1时,它不再工作,但文档中没有任何更改。有人知道怎么解决这个问题吗?

$(document).on("hover", "#cart-left", function(){
    $("#cart").addClass('active');
});

http://jsfiddle.net/michalcerny/R9HZp/

感谢您的支持!

在1.9.1中,您应该使用mouseover

$(document).on("mouseover", "#cart-left", function(){
    $("#cart").addClass('active');
});

hover简写的状态

从jQuery 1.8开始,hover简写已经被弃用。请参阅jQuery on()文档:

自jQuery 1.8起已弃用:名称"hover"用作字符串"mouseenter-moseleave"的缩写

从jQuery 1.9开始,hover简写为不受支持。请参阅jQuery 1.9升级指南

替代

在您的情况下,这意味着您应该使用mouseenter事件。例如:

$(document).on("mouseenter", "#cart-left", function(){
     $("#cart").addClass('active');
});

请参阅jsFiddle演示

更好地利用on()

同样值得注意的是,除非传递给on()的选择器引用动态添加到DOM的元素(即页面加载后),否则不需要将处理程序委托给document。相反,在这种情况下,您可能可以将处理程序函数直接绑定到元素,如下所示:

$("#cart-left").on("mouseenter", function(){
    $("#cart").addClass('active');
});

问题不在于"on"函数,而在于1.9.1中已弃用(并删除)的"hover"伪事件:http://jquery.com/upgrade-guide/1.9/#hover-伪事件