3

****事实是所有这些解决方案都有效,只是不适用于项目,所以我将重新提出问题,略有不同****

基本上我有一个图像,当有人将鼠标光标移到它上面时,它会显示一个 div(其中包含一个图像 - 也就是播放按钮)。当他们移动时,他们的光标在图像之外,播放按钮就会消失。

它有效,但如果你将诅咒移到播放按钮上,它会像疯了一样闪烁,因此我必须以某种方式混淆我的事件..

在此先感谢您的帮助...

HTML

<div id="cont">
    <div id="art"  style= "position: absolute; left: 20px; top: 40px;">
        <a href="#"><img src="http://www.newmusicproducer.com/img/ic_play.png"></a>
    </div>
    <img src="https://i1.sndcdn.com/avatars-000008744854-5sr588-large.jpg?d408275" alt="smile" id="imgSmile"></img>

jQuery

$(document).ready(function() {
    $('#art').hide();             
    $('#imgSmile').mouseenter(function() {
        $('#art').show();
    });

    $('#imgSmile').mouseleave(function() {   
        $('#art').hide();
    });
});​

这是一个小提琴

4

7 回答 7

4

仅使用 CSS 就可以达到同样的效果:

<div>
    <a href="#"><img src="http://www.newmusicproducer.com/img/ic_play.png"></a>
</div>

div
{
 background-image:url('https://i1.sndcdn.com/avatars-000008744854-5sr588-large.jpg?d408275');
    width:100px;
    height:100px;
    position:relative;
}
div a
{
 position:absolute;
    top:20px;
    left:30px;
    display:none;
}
div:hover a
{
    display:block;
}

-- 观看演示 ​​--


编辑:如果您需要在具有不同链接 URL 的同一页面上多次使用它,我制作了一个需要最少 HTML 的版本,使用一点 jQuery 来应用其余部分:

<div class="play kirkbridge" data-playUrl="/myPlayUrl"></div>

http://jsfiddle.net/tW68d/16/

不过,这可能有点矫枉过正,这取决于您的使用情况。

于 2012-05-03T11:16:05.470 回答
3

问题是将鼠标悬停在新图像上导致原始图像上的鼠标悬停。尝试hover()改用两个元素作为选择器。

$(document).ready(function() {
    $('#art').hide();
    $('#imgSmile, #art').hover(
        function() {
            $('#art').show();
        }, function() {
            $('#art').hide();
        }
    );
});

更新的小提琴

于 2012-05-03T11:08:37.113 回答
1

您可以使用该.on()方法,
而不是将两个元素都设置为选择器并使用事件(e)检查器,例如:

演示 jsBin

$(document).ready(function(){

    $('#art').hide();


    $('#imgSmile, #art').on('mouseenter mouseleave',function(e){
        if(e.type === 'mouseenter'){
            $('#art').show();
        }else{
            $('#art').hide();   
        }
    });

});


我最喜欢的是使用三元运算符,例如:

$('#imgSmile, #art').on('mouseenter mouseleave',function(e){
    var et = e.type === 'mouseenter' ? $('#art').show() :  $('#art').hide();  
});

演示与 ternaly 运算符


您可以在您的确切情况下使用以下.toggle()方法:

$('#imgSmile, #art').on('mouseenter mouseleave',function(e){
    $('#art').toggle(); 
});

使用 .toggle() 演示

于 2012-05-03T11:13:56.780 回答
1

这是另一种方法:

http://jsfiddle.net/aramk/ZqVZ6/1/

$(document).ready(function(){

    var art = $('#art');
    art.hide();
    var updatePlayButton = function() {
        if (art.is(':visible')) {
            art.hide();
        } else {
            art.show();
        }
    }

    $('#cont').hover(updatePlayButton);

});​

我会使用包装 DIV,因为当按钮与微笑图像重叠并且您的鼠标在它上方时,您会从微笑图像中失去焦点并开始闪烁。这将避免这种情况。

于 2012-05-03T11:17:22.710 回答
1

如果可以的话,也可以使用 CSS 来完成。

这是小提琴http://jsfiddle.net/xasy4/

<div id="imgSmile">
     <div id="art">
        <a href="#"><img src="http://www.newmusicproducer.com/img/ic_play.png">
        </a>
     </div>
    </div>

的CSS

 #imgSmile
{
    background: url('https://i1.sndcdn.com/avatars-000008744854-5sr588-large.jpg?d408275') no-repeat center Transparent;
    width: 100px;
    height: 100px;
}
#imgSmile > #art
{
    position: absolute; left: 20px; top: 40px; opacity: 0;
}
#imgSmile:hover > #art
{
    position: absolute; left: 20px; top: 40px; opacity: 1;
}
于 2012-05-03T11:18:28.577 回答
1

http://jsfiddle.net/jqkBx/1/

为什么不直接使用 CSS 来实现悬停效果?

HTML

<div id="wrapper">
  <img src="https://i1.sndcdn.com/avatars-000008744854-5sr588-large.jpg?d408275" alt="smile" id="imgSmile" />

  <div id="art" style="position: absolute; left: 20px; top: 40px;">
     <a href="#"><img src="http://www.newmusicproducer.com/img/ic_play.png" /></a>
  </div>
  </div>

CSS

#art{
    display:none;
}
#wrapper{
    width:100px;
    height:100px;        
}
#wrapper:hover #art{
    display:block;        
}

​</p>

于 2012-05-03T11:20:29.807 回答
0
$(document).ready(function() {
    $('#art').hide();             
    $('#imgSmile').mouseenter(function() {
        $('#art').show();
    });
$('#art').mouseenter(function() {
        $('#art').show();
    });
    $('#imgSmile').mouseleave(function() {   
        $('#art').hide();
    });
});​

只需添加#art鼠标输入事件

于 2012-05-03T11:17:07.353 回答