我目前将悬停状态应用于#ex:
$("#ex").hover(function(event) {
$("#prod").show();
}, function() {
$("#prod").hide(0).delay(5000);
});
但是,我还希望将一个onclick状态应用于#prod,它继续显示,但目前它没有因为我在上面编码的行:
$("#prod").hide(0).delay(5000);
任何想法???
答案 0 :(得分:1)
使用stop()
方法停止当前正在运行的动画。
$("#prod").stop().show();
<小时/> 或者建议使用 @ freedomn -m -
finish()
方法。
$("#prod").finish().show();
答案 1 :(得分:1)
您应该使用jQuery的toggle
,finish
和unbind
函数:
var firstState = function() {
$("#ex").hover(function() {
$("#prod").toggle(500);
});
$("#ex").unbind('click').click(secondState);
}
var secondState = function() {
$("#ex").unbind("mouseenter mouseleave");
$("#prod").finish();
$("#ex").unbind('click').click(firstState)
}
firstState();
请找到完整的解决方案:fiddle
答案 2 :(得分:0)
您可以使用mouseenter
事件,该事件仅在您进入目标区域时触发,但在离开时不会停用。通过省略mouseleave
事件,您可以有效地使目标在一个州内无限期地停留。目标所在的条件可以通过返回并再次悬停简单地终止。 *单击正方形。
$('#ex').on('mouseenter', function() {
$('#prod').show();
});
$('#prod').on('click', function() {
$(this).hide();
});
&#13;
#ex {
height: 300px;
width: 300px;
border-radius: 50%;
background: red;
color: white;
padding-top: 10px;
text-align: center;
}
#prod {
height: 150px;
width: 150px;
border: 5px dashed red;
float: right;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod" style="display:none;">Product</div>
<div id='ex'>Hover</div>
&#13;