19

を実行する$(...your selector here...).is(":hover")と、1.9.1 より前の jQuery は正しい答えを返しましたが、jQuery 1.9.1 は次のように伝えます。

エラー: 構文エラー、認識できない式: サポートされていない擬似:hover

これは、ホバー時にアクションを実行することではありません-そのためには、単に .hover() を使用してくださいこれは、任意の時点で、いくつかの要素がホバーされているかどうかを調べることです

Mooseman さん、答えてくれてありがとう

4

3 に答える 3

0

ただし、上記の回避策は、jQuery.fn.is() を使用して要素を事前に知られていない合成セレクターと比較し、親コンテナー内の複数の要素と一致する可能性がある場合には適していません。

たとえば、以下の style_get() 内の selectorText が次のようになると、同じ例外がスローされます。

..ホバーが 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 に答える