:hover产生错误。我该如何修复?

6
我注意到在我的网站上控制台中出现了以下错误:

Error: Syntax error, unrecognized expression: unsupported pseudo: hover @ /wp-includes/js/jquery/jquery.js?ver=1.8.3:2

我发现这个错误是由于我js文件中的以下行引起的:

if(qactive == 0 && !($('#slider').is(":hover"))) {

为了消除错误,我可以用以下另一种方式来编写这行代码:

4
当鼠标悬停在元素上时,将类名 active 添加到该元素,然后在条件语句中检查该类名。 - Ragnarokkr
1
jQuery故意不实现:hover,因为这将需要向页面添加大量处理程序(每个元素都需要事件钩子,因为jQuery不知道您将来可能检查哪些元素),通常会减慢所有操作。 - Dave
2
这个问题对我很有帮助,很抱歉它被那些笨蛋关闭了。 - andygoestohollywood
这是一个真正的问题,相当于:“在之前的jQuery版本中,有什么替代.is(':hover')的方法?” - Dorian
3个回答

12

您只需要将元素绑定到几个事件即可。

$("#slider").hover(
    function(){
        $(this).addClass('is-hover'); // you can use every class name you want of course
    },
    function(){
        $(this).removeClass('is-hover');
    }
);

或者,更简洁地说

$("#slider").hover(
    function(){
        $(this).toggleClass('is-hover'); // you can use every class name you want of course
    }
);

这样,每次触发mouseenter事件时,您将向元素添加一个is-hover类,并且当触发mouseleave事件时,您将删除该类。

在您的if语句中,您只需要更改:

if ( qactive == 0 && !($("#slider").hasClass('is-hover')) ) {

就是这样。

请注意,您必须根据自己的代码进行适当调整。在这里,我只是假设您可能需要什么,因为我看不到您的代码。


如果您尚未为控件设置.hover(),通常这些绑定将被插入到$(document).ready()语句中。通过这种方式,您可以确保元素都可用于附加事件。 - Ragnarokkr

3

看起来在jQuery 1.8中,":hover"选择器已被弃用 http://bugs.jquery.com/ticket/11731 另请参见jQuery 1.8: unsupported pseudo: hover

您可能需要添加一个新的事件处理程序来识别此状态:

$('.selector').on( 'mouseenter mouseleave', function() {
      $(this).toggleClass('hover');
   }
);

if(!$(this).parent().find('ul').first().hasClass('hover')) {
   $(this).parent().parent().removeClass('open');
}

0

看一下悬停鼠标事件。你可以用一个布尔标志/变量来替换对!($('#slider').is(":hover"))的检查,通过在$('#slider')上悬停来设置和取消该标志/变量。

http://api.jquery.com/hover/

如果您想要一个示例,您需要提供更多的代码,或者可能是一个 jsfiddle。

一个非常基本的示例可能是这样的:

var sliderHover= false;

$('#slider').hover(
    function () {
        sliderHover = true;
    },
    function () {
        sliderHover = false;
    }
});

// ...........MORE CODE ................

// Then later just check - watch your scoping though
if(qactive == 0 && !sliderHover)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接