javascript - 让悬停功能出现在所有 100 个 div 中

标签 javascript jquery html css

我真的很感激我的代码逻辑方面的帮助。 我有一个 100 个 div 的循环,我希望当我将鼠标悬停在任何一个 div 上时,它应该显示一个弹出窗口(我只剩下很少的调整要做)。

问题是当悬停在...上时,我似乎无法使弹出窗口在所有 div 上工作...只有第一个工作..

请帮我看看我做错了什么。谢谢

下面是我的代码

<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<link href="/css/index.css" rel="Stylesheet"/>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>

   <script type='text/javascript'>
     $(document).ready(function() {
     $('#popDiv').hover(
     function() { $('#divTable').show(); },
     function() { $('#divTable').hide(); }
      );
      });
   </script>

  </head>
  <body >
   <div id="wrapper">
   <div id="container">

       <form action="/models/top100.js">
         <div id="divTable" class="tooltip" href="#">
             <table id= "tbDetails" class="popup" >
              <tbody><tr>
                 <td class="col1"></td>
                 <td class="col2"></td>
                 <td class="col3"></td>
                 <td class="col4"></td>
              </tr> </tbody>
              </table>
          </div>
          <div  id="bodydiv"> <div id="leftdiv" > 
             <% for (var i = 0; i < 100; i++) { %>
               <div id="popDiv">

                </div>
                   <div id="tabDiv"></div>
            <% } %>
           </div>
           </div>

           </form>

</div>
</div> 
</body>
</html>

和CSS

a.tooltip {outline:none; }
a.tooltip strong {line-height:20px;}
a.tooltip:hover {text-decoration:none;} 
.tooltip  {
 z-index:10;display:none; margin-right:50px;

 width:135px; line-height:16px;
 position:absolute; color:#111;
 border:1px solid #D2D2D2; background:#ffffff;
}
.tooltip.show { display: inline-block; }

.callout {z-index:20;position:absolute;top:30px;border:0;left:-12px;}

.popup
{
  width:135px;
  height:50px;
  text-align:  center;
  background-color: yellow;
  display: inline-block;
  vertical-align: middle;
  margin-right: 50px;
  line-height:  50%;

 }
 #wrapper
 {
    margin: auto;
 }

 #container
 {
   position:absolute;
   margin:0px auto;
  }
  #bodydiv
  {
    margin:0 auto;
    padding:0px;
  }

  #leftdiv
  {
    margin-top:30vh;
    margin-left:15vh;
    width:90vh;
    height:75vh;
    float:left;
  }

  #popDiv
  {

     display:inline-block;
     border-width: 2px;
     border-style: solid;
     border-color: rgb(236, 80, 184);
     background-color: rgb(236, 80, 184);
     margin-left:10vh;
     width:5vh;
     height:20vh;
    }
    #tabDiv
    {

     width:70vh;
     height:20vh;
     display:inline-block;
     border-width: 2px;
     border-style: solid;
     background-color: rgb(179, 80, 236);
     border-color: rgb(122, 204, 241);
    }

提前致谢

最佳答案

您在编写 hover 函数时使用了 ID 选择器,因此它仅适用于 DOM 中的第一个元素。相反,您需要使用 class 选择器 并像这样为 div 提供类名。

$(document).ready(function() {
  $(".test").hover(function() {
    $(this).css("background-color", "yellow");
  }, function() {
    $(this).css("background-color", "white");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">Hover the mouse pointer over this</div>
<div class="test">Hover the mouse pointer over this</div>
<div class="test">Hover the mouse pointer over this</div>

P.S您的 ID 在页面中应该是唯一的。

关于javascript - 让悬停功能出现在所有 100 个 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47945331/

相关文章:

php - 通过单次提交附加所有表单复选框数据

javascript - CSS 裁剪 div 元素

javascript - 在运行时用来自indexeddb的数据填充cshtml

javascript - document.write 在 html 中不起作用

javascript - 移动 slider 仅响应其他触摸

jquery - 顶部有滚动内容的静态背景

javascript - 使用数据属性和 javascript 将背景大小值从包含更改为覆盖

javascript - 脚本5007 : Unable to get value of the property '0' : object is null or undefined

javascript - CKEditor插件: Hightlight selected text by hovering on a new item in the toolbar and selecting from a drop down

html - 带填充的容器中的全 Angular 图像