【问题标题】:jquery fade in fade out on hover for multiple elementsjquery淡入淡出悬停多个元素
【发布时间】:2011-12-20 16:04:55
【问题描述】:

我正在处理投资组合页面,并希望在用户将鼠标悬停在项目上时使用 jquery 淡入图像上的某些信息。

我对后端 jquery 的东西还很陌生,所以刚刚开始动手。

我已经设法让淡入和淡出来处理单个 div 元素,但我需要它为每个元素独立工作。我认为这需要某种更动态的代码,但我不确定从哪里开始。

如果您看下面,我有适用于一项的代码。将鼠标悬停在第一张图片上时会出现 div。这是我需要的结构,因为真正的投资组合具有这种基本结构。我只需要代码让它为其他两个工作。实时站点中会有多个悬停。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"     type="text/javascript"></script>
<title>Robs Test</title>
<style>
body{background:gray;}
div{position:relative;}
#box{
    position:relative;
    width:150px;
    height:150px;
    float:left;
    display:block;
    background:black;
    margin-right:20px;
}
#boxover{
    position:absolute;
    top:10px;
    left:0px;
    width:100%;
    height:20px;
    z-index:100;
    background:white;
    display:none;
}
</style>
<script type="text/javascript">
    $(function(){
        $('#box').hover(over, out);
    });

function over(event)
{
    $('#boxover').fadeIn(2000);
    $('#boxover').css("display","normal");
}
function out(event)
{
    $('#boxover').fadeOut(2000);
}
</script>

</head>

<body>
<a href="#" id="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="boxover">hello</div></a>
<a href="#" id="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="boxover">there</div></a>
<a href="#" id="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="boxover">rob</div></a>

</body>

</html>

如果有人能告诉我如何让每个人独立工作,那就太好了。

我猜像灯箱这样的 rel 属性?

我很高兴为每张图片提供单独的 id/rel。我只是不想复制 css。

希望这是有道理的:)

好的,所以我已经更新了它,但它仍然不起作用。我可以看到发生了什么,但不确定让它工作的确切语法。

这是我的新代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<title>Robs Test</title>
<style>
body{background:gray;}
div{position:relative;}
.box{
    position:relative;
    width:150px;
    height:150px;
    float:left;
    display:block;
    background:black;
    margin-right:20px;
}
.boxover{
    position:absolute;
    top:10px;
    left:0px;
    width:100%;
    height:20px;
    z-index:100;
    background:white;
    display:none;
}
</style>
<script type="text/javascript">
    $(function(){
        $('.box').hover(over, out);
    });


    function over(event){
        var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
        $(over_id).fadeIn(2000);
    }, 
    function out(event) {
        var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
        $(over_id).fadeOut(2000);
    }

</script>

</head>

<body>
<a href="#" class="box" id="over_1"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_1" class="boxover">hello</div></a>
<a href="#" class="box" id="over_2"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_2" class="boxover">there</div></a>
<a href="#" class="box" id="over_3"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_3" class="boxover">rob</div></a>


</body>

</html>

我想我快到了,因为伪逻辑是有道理的,但它仍然不起作用。

干杯

罗伯

【问题讨论】:

    标签: jquery hover fadein fadeout


    【解决方案1】:

    给你: http://jsfiddle.net/Mm66A/13/

    请不要使用 ID 字段来命名事物“box,box,box”,使用“box”类来表示每个项目都是“box”类型。你可以给每个盒子一个唯一的ID。

    【讨论】:

      【解决方案2】:

      在有效的 html 中不能有多个具有相同 id 的元素。将每个id 更改为class 并将您的jquery 选择器从$('#box')$('#boxover') 更改为$('.box')$('.boxover'),这应该适合你...

      【讨论】:

        【解决方案3】:

        首先:不要对所有as 和divs 使用相同的id。 id 是元素的唯一标识符,对于元素的“组”,有class 属性。

        要显示/隐藏相应的框,请使用jquery的高级选择器,尝试获取直接在悬停元素之前的一个框。

        【讨论】:

          【解决方案4】:

          你可以这样做:

          <a href="#" class="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div class="boxover">hello</div></a>
          <a href="#" class="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div class="boxover">there</div></a>
          <a href="#" class="box"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div class="boxover">rob</div></a>
          
          
          $(function() {
              $('.box').hover(over, out);
          });
          
          function over(event) {
              $('.boxover', this).fadeIn(2000);
              $('.boxover', this).css("display", "normal");
          }
          
          function out(event) {
              $('.boxover', this).fadeOut(2000);
          }
          

          在这里摆弄http://jsfiddle.net/rynma/

          基本上您必须使用classes 而不是ids,因为id 必须是唯一的,并且您将context 传递给jquery 选择器以将选择限制为上下文(我使用this

          【讨论】:

            【解决方案5】:

            根据您所定位的浏览器,don't need jQuery at all。如果您必须针对 IE 并且不能立即更改而不是转换,您可以有条件地评论对 Javascript 的引用,就像其他海报提到的那样。

            【讨论】:

              【解决方案6】:

              我会给每个标签一个唯一的 id,并给 over box 一个 'over_' + id_of_box_link 的 id 并将 id=box 更改为 class=box 然后你可以通过这样做来应用悬停:

              您不能有重复的 ID。

              <a href="javascript:void(0)" class="box" id="over_1"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="box_over_1">hello</div></a>
              <a href="javascript:void(0)" class="box" id="over_2"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="box_over_2">there</div></a>
              <a href="javascript:void(0)" class="box" id="over_3"><img src="anyimage.jpg" alt="test" width="150" height="150" /><div id="box_over_3">rob</div></a>
              
              
              
              $(".box").hover(
                  function () {
                      var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
                      $(over_id).fadeIn(2000);
                  }, 
                  function () {
                      var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
                      $(over_id).fadeOut(2000);
                  }
              );
              

              【讨论】:

              • 嗨,这似乎是有道理的。我知道我不能使用 ID,这只是为了举例:) 我已经按照你说的做了,但它似乎不起作用?有什么想法吗?谢谢:)
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-10-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-25
              相关资源
              最近更新 更多