【问题标题】::hover produces errors. How can I fix this?:hover 会产生错误。我怎样才能解决这个问题?
【发布时间】:2013-04-04 00:02:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 在悬停事件中,向元素添加一个类 active,然后在 if 语句中检查该类。
  • jQuery 故意不实现:hover,因为它需要向页面添加大量处理程序(每个元素都需要事件挂钩,因为 jQuery 不知道您将来可能会检查哪些),通常会减慢一切。
  • 这个问题对我有帮助,很抱歉它已被 ejits 关闭。
  • 这是一个真正的问题,相当于:“在以前的 jQuery 版本中,.is(':hover') 的替代品是什么?”

标签: javascript jquery jquery-hover


【解决方案1】:

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

$("#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()语句中。通过这种方式,您可以确定所有元素都可以附加到事件中。
【解决方案2】:

在 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');
}

【讨论】:

    【解决方案3】:

    看看鼠标悬停事件。您可以将 !($('#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)
    

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 2013-10-24
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2022-06-19
      相关资源
      最近更新 更多