如果课程没有悬停 - 不起作用

时间:2016-12-20 19:55:57

标签: jquery

点击#menut关闭.m2wrap以外的任何地方。有用。

$(document).click(function() {
  if (!$('#menut').is(':hover')) {
    $('.m2wrap').slideUp();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='menut'>
  <div class='m1wrap'>
    <div class='m1'>SKY</div>
    <div class='m2wrap'>
      <div class='m2'>SEA</div>
      <div class='m2'>EARTH</div>
    </div>
  </div>
</div>

但是,如果我将#menut替换为.m1wrap,则无效。

$(document).click(function() {
  if (!$('.m1wrap').is(':hover')) {
    $('.m2wrap').slideUp();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='menut'>
  <div class='m1wrap'>
    <div class='m1'>SKY</div>
    <div class='m2wrap'>
      <div class='m2'>SEA</div>
      <div class='m2'>EARTH</div>
    </div>
  </div>
</div>

在这种情况下,控制台会显示错误 - Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover...

实际上,我需要的是 - if multiple class is not hover...

任何帮助?

2 个答案:

答案 0 :(得分:1)

尝试

$(document).click(function() {
  if($('#menut:hover').length == 0) {
    $('.m2wrap').slideUp();
  }
});

这是关注SO question中的答案。

答案 1 :(得分:0)

我解决了完全相同的问题,只需在悬停前删除分号即可,如下所示

`$(document).ready(function(){
  $(".owl2-controls").mouseleave(function() {
    if(!$('.owl2-controls').is(':hover')){
      $('.owl2-controls').hide();
    };
  });
 });`

`$(document).ready(function(){
  $(".owl2-controls").mouseleave(function() {
    if(!$('.owl2-controls').is('hover')){
      $('.owl2-controls').hide();
    };
  });
 });`

现在没有错误抛出。