我有一个jQuery,在鼠标移动时淡入/淡出div
这样的对象:
var timer;
$(window).on('mousemove', function () {
$("#my_div").fadeIn(1000)
$('#my_div').addClass('show');
try {
clearTimeout(timer);
} catch (e) {}
timer = setTimeout(function () {
$('#my_div').fadeOut(1000,function() {
$(this).removeClass('show');
});
}, 1960);
});
问题是我的div
标签上有输入表格和其他输入。
如何暂停此jQuery,直到鼠标悬停在my_div
?
答案 0 :(得分:1)
试试这个:
var timer;
$(window).on('mousemove', function () {
if($('#my_div:hover').length !== 0) {
clearTimeout(timer);
return;
}
$("#my_div").fadeIn(1000)
$('#my_div').addClass('show');
try {
clearTimeout(timer);
} catch (e) {}
timer = setTimeout(function () {
$('#my_div').fadeOut(1000,function() {
$(this).removeClass('show');
});
}, 1960);
});
这不会停止该事件,只有当您将鼠标移到my_div
之上时,它才会取消它,如果您想要停止使用addEventListener
事件,那么它很容易停止它
答案 1 :(得分:1)
您可以检测event.target
是my_div
元素还是其中一个后代:
var timer, myDiv = $('#my_div');
$(document).on('mousemove', function(ev) {
var _self = $(ev.target);
clearTimeout(timer);
if (_self.attr('id') === 'my_div' || _self.parents('#my_div').length) {
return;
}
if(!myDiv.hasClass('show')) {
myDiv.fadeIn();
}
timer = setTimeout(function() {
myDiv.fadeOut(1000, function() {
myDiv.removeClass('show');
});
}, 1960);
});