阻止.mouseout事件执行
Prevent .mouseout event from executing
我列出了这个HTML结构中的图像和描述:
<div class="canDo">
<p>
<img src="http://placehold.it/100x100" />
<span>Description 1</span>
</p>
<p>
<img src="http://placehold.it/100x100" />
<span>Description 2</span>
</p>
<p>
<img src="http://placehold.it/100x100" />
<span>Description 3</span>
</p>
<p></p>
</div>
我用CSS隐藏<span>
,并使用jQuery函数将描述添加到最后一个<p>
中。HTML结构也被选择用于我的响应式布局。
$(document).ready( function() {
$(".canDo img").mouseover( function() {
$(".canDo img").removeClass('active').addClass('fade');
$(this).addClass('active').removeClass('fade');
$(".canDo p:last-child").fadeOut(function() {
var msg = $('.canDo img.active').next('span').html()
$(".canDo p:last-child").text(msg).fadeIn();
});
})
.mouseout( function() {
setTimeout(function(){
$(".canDo img").removeClass('active fade')
$(".canDo p:last-child").fadeOut();
}, 3000);
});
});
我遇到的问题是,当我悬停第一个项目,然后悬停第二个项目(并将鼠标保持在第二个上)时,会执行第一个项目的mouseout
功能,使渐变效果和文本消失。
我该如何防止这种情况发生?
我还做了一个jsFiddle。
试试这个。。。我想这正是你想要的。如果不是,请告诉我。
http://jsfiddle.net/bpd2Ldy1/
所以。。。我所做的是将setTimeout
函数的结果(返回特定的超时id)分配给变量tm
。如果设置了它(意味着3秒后某个东西逐渐消失),并且用户将鼠标悬停在另一个小框上,它将清除并停止超时。这使得它不会与新的mouseover事件发生冲突。如果没有鼠标悬停.canDo
,则超时将在3秒后不间断地完成。
$(document).ready( function() {
$(".canDo img").mouseover( function() {
$(".canDo img").removeClass('active').addClass('fade');
$(this).addClass('active').removeClass('fade');
if (typeof(tm) != 'undefined') {
clearTimeout(tm);
}
$(".canDo p:last-child").stop().fadeOut(function() {
var msg = $('.canDo img.active').next('span').html()
$(".canDo p:last-child").text(msg).stop().fadeIn();
});
})
.mouseout( function() {
tm = window.setTimeout(function(){
$(".canDo img").removeClass('active fade')
$(".canDo p:last-child").stop().fadeOut("slow");
}, 3000);
});
});
相关文章:
- 使用react js在跨域上执行事件javascript
- 如何使用cURL或其他方式在点击时执行事件
- javascript执行事件顺序
- While Scrolling:如果scrollTop()等于或达到一个值,则执行事件
- 如何使用gulp-jslint-simple成功执行事件
- 如果初始事件返回 false,则停止执行事件侦听器
- 我怎么能等待在javascript中执行事件
- 使用 AJAX 在 jQuery 和 C# 之间传递变量和执行事件
- 执行 C# 事件处理程序,然后执行该 js 函数
- Vue.js 在组件渲染后执行事件触发器
- 在事件的自然行为之前执行事件
- javascript更改类没有't执行事件
- 如何按顺序执行事件函数
- 在worker上执行事件对象.Onmessage从不包含任何有趣的数据之外的东西
- 选项更改,执行事件javascript
- 使用node.js在进程终止时执行事件
- 从此特定父类查找兄弟类以执行事件
- 使用jquery创建弹出窗口并执行事件
- Javascript执行事件点击
- 单击除一个元素之外的所有内容时执行事件