javascript - jQuery 鼠标悬停函数在 $(window).resize 之后仍然触发

标签 javascript php jquery html css

我尝试在桌面鼠标悬停时显示/隐藏下拉菜单,然后单击小菜单 看法。而且,我使用了 $(window).resize 函数。而且,它确实有效。

我的问题是 - 在这里,仍然会在小 View 上触发 mouseover 功能。如果,我尝试使用 $('element').off('mouseover'); 函数。所以,它工作正常。但是,在这里,我们的另一个鼠标悬停功能不起作用。

那么,我怎样才能停止在小 View 上触发 mouseover 功能。

演示在此 JS fiddle

$(window).on('resize', function() {
  var screensize = $(window).width();
  if (screensize > 600) {
    $(".drop").on("mouseover", function() {
      $('.dropdown-content').stop().slideDown('fast');

      $(this).bind('mouseleave', function() {
        $('.dropdown-content').stop().slideUp('fast');

      });
    });
  } else {
    $(".drop").on("mouseover", function() {
      $(this).css('background', 'red');
    });

    $(".drop").on("click", function() {
      $('.dropdown-content').stop().slideToggle('fast');
    });
  }
}).resize();
.drop {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  padding: 12px 16px;
  z-index: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="drop">
  <span>Mouse over me</span>
  <div class="dropdown-content">
    <p>Hello World!</p>
  </div>
</div>

最佳答案

在我看来,这可以通过在从鼠标悬停事件执行回调时检查宽度来简化。

var dropIsDown = false;
$(".drop").on("mouseover", function() {
   if ($(window).width() > 600) {
      $('.dropdown-content').stop().slideDown('fast');
      dropIsDown = true;
   } else {
      $(this).css('background', 'red');
   }
 });

$(".drop").on("mouseleave", function() {
   if (dropIsDown) { 
      $('.dropdown-content').stop().slideUp('fast');
      dropIsDown = false;
    }
 });

关于javascript - jQuery 鼠标悬停函数在 $(window).resize 之后仍然触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267236/

相关文章:

JavaScript WebSocket 将引用替换为新套接字

php - 使用 ajax 为 WooCommerce 产品创建过滤器选择器

javascript - 如何禁用特定类的日期选择器箭头

javascript - 如何使用 JavaScript 暂停 HTML5 视频?

jquery - 如何在 jQuery Blueimp fileupload 中手动提交文件

php - 在图像上标记点

javascript - Chrome 扩展拒绝将字符串评估为 JavaScript,因为 emscripten 生成的文件中有 'unsafe-eval'

php - 如何捕获另一个类的异常?

php - 为什么 foreach 将 refcount 增加 2 而不是 1?

javascript - 如何在 javascript 中为 style.width 触发媒体查询