【问题标题】:Image hover displaying all images at the same time图像悬停同时显示所有图像
【发布时间】:2017-03-29 16:03:44
【问题描述】:

我正在使用 Jquery 并尝试创建悬停效果。最终结果只是将鼠标悬停在 <h2> 元素上,并且应该为相应的元素内容组显示单个特征图像。然而,多个图像一次出现,而它应该只是一个图像。继承人工作pen

HTML

<p>Hover over titles</p>

<div class="content1">
  <h2>Title 1 goes here </h2>
  <img src="http://lorempixel.com/400/400/sports" alt="Image"/>
</div>

<div class="content2">
  <h2>Title 2 goes here </h2>
  <img src="http://lorempixel.com/300/300/people" alt="Image"/>
</div>

<div class="content2">
  <h2>Title 3 goes here </h2>
  <img src="http://lorempixel.com/200/300/technology" alt="Image"/>
</div>

CSS

img {
  position: absolute;
  display: none;
}

jQuery

$(document).ready(function(){
    $('h2').on('mouseenter mousemove', function(evt){
        $('h2,img').css({left: evt.pageX+30, top: evt.pageY-15}).show();
        $(this).on('mouseleave', function(){
            $('img').hide();
        });
    });
});

为什么会同时显示所有图像?以及如何解决它以仅在上下文中显示一张图片?

谢谢!

【问题讨论】:

  • 试试$(this).next('img').css({left: evt.pageX+30, top: evt.pageY-15}).show();
  • 这也有效!谢谢

标签: javascript jquery html css image


【解决方案1】:

因为您告诉它在 h2 事件上一次显示所有图像。试试这个代码:

$(document).ready(function(){
    $('h2').on('mouseenter mousemove', function(evt){
        $(this).siblings('img').css({left: evt.pageX+30, top: evt.pageY-15}).show();
        $(this).on('mouseleave', function(){
            $(this).siblings('img').hide();
        });
    });
});

你可以在这里看到它的工作原理:https://jsfiddle.net/zaj200mL/

【讨论】:

  • 这真的很奇怪,但是在访问其他站点页面并返回到使用此 jquery 的索引页面后,这不起作用。但是它在页面刷新后可以工作,但在访问其他页面后问题仍然存在。
  • 我认为这段代码没有错误,听起来像是其他原因导致了您的问题。上面的代码可以满足您在问题@samsos 中的要求
  • 我正在使用this,但看不到问题可能发生在哪里
  • 当您不使用该库时,上面的代码是否可以正常工作? @samsos
  • 该死的。我应该进行那个明显的检查。它运作良好。你的代码不是问题。我道歉
猜你喜欢
  • 1970-01-01
  • 2020-07-22
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多