19

在做的时候$(...your selector here...).is(":hover"),jQuery 1.9.1 之前给出了正确的答案,而 jQuery 1.9.1 告诉你这个:

错误:语法错误,无法识别的表达式:不支持的伪:hover

这不是关于在悬停时执行操作 - 为此,只需使用 .hover() 这是关于在任意时间点找出某个元素是否被悬停

谢谢穆斯曼的回答,我将用小提琴演示

4

3 回答 3

22

假设您的选择器是#myid,使用$('#myid:hover')而不是使用.is()

如果您正在使用$(this)或 变量,请使用myVar.filter(':hover').

于 2013-05-11T13:14:14.457 回答
0

但是,当您将使用 jQuery.fn.is() 的元素与事先未知的组合选择器进行比较时,上述解决方法不适合,并且可能匹配父容器中的多个元素。

例如,当以下 style_get() 中的 selectorText 等于:“.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_dragger_dragger.mCSB_draggger_bar, .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.

..因为悬停未在 Sizzle.selectors.pseudos 或 Sizzle.selectors.setFilters (jquery-2.1.4,第 1764 行)中定义。

function style_get(elem) {

  var sheets=document.styleSheets;
  var css_properties={};
  elem=$(elem);

  for (var s in sheets) {
    var rules=sheets[s].rules || sheets[s].cssRules;

    for (var r in rules) {
      if (elem.is(rules[r].selectorText)) {

        css_properties=$.extend(
          css_properties,
          css.parse(rules[r].style),
          css.parse(elem.attr('style'))
        );

      }
    }

  }

  return css_properties;

}
于 2015-06-01T14:40:23.820 回答
0

您可以尝试使用 .filter()

我认为,我的解决方案将帮助您:

//
// jQuery 3 pseudo ':hover' doesn't support
//

// Working on jQuery 1.7.1
$("*").on('click', $.proxy(function() {
    if ( this.$('.tooltip:hover').length > 0 ) { // jQuery 3.2.1 -> Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover
      console.log('Hovered!');
    } else { 
      console.log('Where is my element!?'); 
    }
}, this));


// Updated solution for jQuery 1.7.1 - 3.2.1
$("*").on('click', $.proxy(function() {
    var isHovered = $('.tooltip').filter(function() {
        return $(this).is(":hover");
    });

    if ( isHovered.length > 0 ) {
      console.log('Hovered!');
    } else { 
      console.log('Where is my element!?'); 
    }
}, this));

另外,您可以查看我的 GitHub 要点:https ://gist.github.com/antydemant/74b00e27790e65f4555a29b73eea7bb2

于 2018-01-04T21:29:01.410 回答