:hover会产生错误。我怎样才能解决这个问题?

时间:2013-04-04 00:02:13

标签: javascript jquery jquery-hover

我注意到我的网站控制台出现了以下错误。

  

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

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

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

我可以用哪种替代方法来写这条线以使错误消失?

3 个答案:

答案 0 :(得分: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事件被触发时,您将删除该类。< / p>

if语句中,您只需更改:

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

就是这样。

请注意,当然,您必须将此示例改编为您的代码。在这里,我只假设你可以需要什么,因为我看不到你的代码。

答案 1 :(得分:3)

似乎在jQuery 1.8 http://bugs.jquery.com/ticket/11731中不推荐使用“:hover”选择器,另请参阅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');
}

答案 2 :(得分: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)