事实上所有这些解决方案都有效,只是没有项目,所以我会重新提出问题,略有不同**
基本上我有一个图像,当有人将鼠标光标移动到它上面时,它会显示一个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();
});
});
答案 0 :(得分: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;
}
编辑:如果您需要在具有不同链接网址的同一页面上多次使用此项,我已经制作了一个版本,需要使用一些jQuery来应用其余的最小HTML:
<div class="play kirkbridge" data-playUrl="/myPlayUrl"></div>
这可能有点矫枉过正,这取决于你的使用情况。
答案 1 :(得分:3)
问题是鼠标悬停在新图像上导致鼠标输出原件。请尝试使用hover()
,同时使用这两个元素作为选择器。
$(document).ready(function() {
$('#art').hide();
$('#imgSmile, #art').hover(
function() {
$('#art').show();
}, function() {
$('#art').hide();
}
);
});
答案 2 :(得分:1)
您可以使用.on()
方法,而不是将两个元素都设置为选择器,并使用事件(e)
检查器,如:
$(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();
});
您可以在您的确切情况下使用.toggle()
方法:
$('#imgSmile, #art').on('mouseenter mouseleave',function(e){
$('#art').toggle();
});
答案 3 :(得分: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,因为当按钮与微笑图像重叠并且鼠标悬停在它上面时,你会从微笑图像中失去焦点并开始闪烁。这样可以避免这种情况。
答案 4 :(得分: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;
}
答案 5 :(得分: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;
}
答案 6 :(得分:0)
$(document).ready(function() {
$('#art').hide();
$('#imgSmile').mouseenter(function() {
$('#art').show();
});
$('#art').mouseenter(function() {
$('#art').show();
});
$('#imgSmile').mouseleave(function() {
$('#art').hide();
});
});
只需添加#art
鼠标输入事件