所以,我有这种情况,但是如果用户"mouseleave(s)"超过x时间,比如一秒,我只想做"做某事".我应该如何实现呢?
$("#someElement, #someOtherElement").mouseleave(function() {
// Do something.
});
Run Code Online (Sandbox Code Playgroud)
后来我补充道:
$('.popover3-test').popover({
placement:'bottom',
template: $('.popover2'),
trigger: 'manual',
}).mouseenter(function(e) {
$(this).popover('show');
$(".popover3-test, .popover2").each(function() {
var t = null;
$(this)
.mouseleave(function() {
t = setTimeout(function() {
$('.popover2').hide();
}, 1000); // Or however many milliseconds
})
.mouseenter(function() {
if(t !== null)
clearTimeout(t);
})
;
});
});
Run Code Online (Sandbox Code Playgroud)
setTimeout 应该做的伎俩:
$("#someElement, #someOtherElement").each(function() {
var t = null;
$(this)
.mouseleave(function() {
t = setTimeout(function() {
// Do something.
}, 1000); // Or however many milliseconds
})
.mouseenter(function() {
if(t !== null) {
clearTimeout(t);
t = null;
}
})
;
});
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想要它可以工作,只需删除.each:
var t = null;
$("#someElement, #someOtherElement")
.mouseleave(function() {
t = setTimeout(function() {
// Do something.
}, 1000); // Or however many milliseconds
})
.mouseenter(function() {
if(t !== null) {
clearTimeout(t);
t = null;
}
})
;
Run Code Online (Sandbox Code Playgroud)