javascript - jQuery 悬停动画仅在类似元素中的一个元素上

标签 javascript jquery html css

我是 Js 和 jQuery 的新手,当我将鼠标悬停在另一个 div 上时,我设法在一个 div 上设置了一个宽度变化动画。但是,当我将 3 组相似的 div 放在其中时,将鼠标悬停在其中一组上会触发所有其他 div 的 Action 。我试图添加一些“this”和“next()”,但它完全停止工作了。你能赐教吗?谢谢

这是代码。

https://jsfiddle.net/HiD3f/LmbaL1qo/2/

<html>
   <div class="mapHideBtn collapsed"></div>
   <div class="searchBlock hidden"></div>

   <div class="mapHideBtn collapsed"></div>
   <div class="searchBlock hidden"></div>

   <div class="mapHideBtn collapsed"></div>
   <div class="searchBlock hidden"></div>
</html>

<style>
  .searchBlock {
     display : inline-block;
     height: 50px;
     background : red;  
  }
  .hidden {
     width: 0; 
     transition : width 0.4s ease-in
  }
  .shown {
     width: 300px;
     transition : width 0.4s ease-in
  }
  .mapHideBtn {
     display : inline-block;
     width: 50px;
     height: 50px;
     background : green;
  }
</style>

<script>
  $('.mapHideBtn').hover(function(){
  if ($(this).hasClass("collapsed")) {
    $('.searchBlock').removeClass("hidden").addClass("shown");
    $('.mapHideBtn').removeClass("collapsed").addClass("expanded");
  } 

  else {
   $('.searchBlock').removeClass("shown").addClass("hidden");
   $('.mapHideBtn').removeClass("expanded").addClass("collapsed");
  };
});

最佳答案

您可以使用$(this).next()toggleClass() DEMO

$('.mapHideBtn').hover(function(){
  $(this).next().toggleClass('shown');
});

更新:如果您希望红色条在您将鼠标悬停在其上时保持打开状态,您可以使用这种纯 CSS 方法 DEMO或者将 .searchBlock 放在 .mapHideBtnDEMO

关于javascript - jQuery 悬停动画仅在类似元素中的一个元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37163724/

相关文章:

javascript - 有没有办法衡量页面中 Javascript 的权重?

javascript - Javascript mousedown、mouseup 和 mouseover 事件出现奇怪且意外的行为

javascript - 如何删除对象数组中的对象: jquery?

php - <select> population via Ajax : JSON Object vs. echo'ing HTML?

html - 为什么我不能设置此链接的样式?

javascript - 如何使我的 Canvas 外菜单滚动?

JavaScript打包整数并计算任意精度浮点:

javascript - 如何使用 react-select 和 react-bootstrap 来获取值

javascript - 从网络服务解析日期

javascript - 没有 if 语句限制数字