6

我注意到我在我的网站上的控制台中收到以下错误。

错误:语法错误,无法识别的表达式:不支持的伪:hover @ /wp-includes/js/jquery/jquery.js?ver=1.8.3:2

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

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

我可以用什么替代方式编写此行以使错误消失?

4

3 回答 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')) ) {

就是这样。

请注意,当然,您必须使这个示例适应您的代码。在这里,我只是假设您可能需要什么,因为我看不到您的代码。

于 2013-04-04T00:32:12.323 回答
3

jQuery 1.8 中似乎不推荐使用“:悬停”选择器http://bugs.jquery.com/ticket/11731另请参阅jQuery 1.8:不支持的伪:悬停

您可能必须自己添加一个新的事件处理程序才能识别此状态:

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

if(!$(this).parent().find('ul').first().hasClass('hover')) {
   $(this).parent().parent().removeClass('open');
}
于 2013-04-04T00:18:39.043 回答
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)
于 2013-04-04T00:10:52.377 回答