$('#cart > .heading a').bind('mouseenter', function() {
$('#cart').addClass('active');
$.ajax({
url: 'index.php?route=checkout/cart/update',
dataType: 'json',
success: function(json) {
if (json['output']) {
$('#cart .content').html(json['output']);
}
}
});
$('#cart').bind('mouseleave', function() {
$(this).removeClass('active');
});
});
我需要在mouseleave上延迟removeClass。我可以简单地添加一个this.delay行吗?
答案 0 :(得分:5)
您可以使用setTimeout()
$('#cart').bind('mouseleave', function() {
var $that = $(this);
setTimeout(function(){$that.removeClass('active');}, 500); //500 millisec delay
});
答案 1 :(得分:3)
$('#cart > .heading a').hover(function() {
// clear the previously defined timeout if any
clearTimeout($(this).data('timeout'));
$(this).addClass('active');
// do other stuff here
}, function() {
// set timeout and save it in element's state
// so it could be removed later on if needed
var e = $(this).data('timeout', setTimeout(function() {
e.removeClass('active');
}, 3 * 1000)); // 3 sec.
});
这样.removeClass('active')只有在鼠标位于元素之外时才会采取行动。