我使用基于jQuery开发的这个标签视图:
https://d2o0t5hpnwv4c1.cloudfront.net/001_Tabbed/site/jQuery.html#
我更改标签因mouseenter
事件而更改的代码。我想延迟mouseenter
事件的执行,所以如果鼠标进入elemnt并在那里停留一段时间mouseenter
执行其他操作(如果鼠标在时间之外的时间少于该部分时间){{ 1}}不执行。我写这段代码:
mouseenter
但如果我将鼠标从$(document).ready(function () {
$('a.tab').on('mouseenter', function () {
var thisElement = $(this);
setTimeout(function () {
$(".active").removeClass("active");
thisElement.addClass("active");
$(".content").slideUp();
var content_show = thisElement.attr("title");
$("#" + content_show).slideDown();
}, 300);
});
});
元素中删除,那么如何解决这个问题?
感谢
答案 0 :(得分:8)
您需要存储超时句柄并在mouseleave
上取消它:
var timeout;
$(document).ready(function () {
$('a.tab').on('mouseenter', function () {
var thisElement = $(this);
if (timeout != null) { clearTimeout(timeout); }
timeout = setTimeout(function () {
$(".active").removeClass("active");
thisElement.addClass("active");
$(".content").slideUp();
var content_show = thisElement.attr("title");
$("#" + content_show).slideDown();
}, 300);
});
$('a.tab').on('mouseleave', function () {
if (timeout != null) {
clearTimeout(timeout);
timeout = null;
}
});
});