gpt4 book ai didi

javascript - jQuery:单击时,阻止 mouseenter 事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:48 27 4
gpt4 key购买 nike

我有两个单独的动画正在发生,一个在 mouseenter 上触发,另一个在 click 上触发。问题是,当它们都被激活时,它会产生一个跳跃的动画。

你可以在这里明白我的意思:JSFiddle

如果click事件被激活,是否可以阻止mouseenter事件的发生?

Javascript

$('header h1').mouseenter(function() {
$('header:not(.open)').delay(500).animate({
'padding-bottom': '40px'
}, 150, function() {
//function complete
});
});

$('header h1').mouseleave(function() {
$('header:not(.open)').animate({
'padding-bottom': '20px'
}, 150, function() {
//function complete
});
});

$('header h1').click(function() {

if ($('header').hasClass('open')) {
$('header p').fadeOut(100);
$('header').removeClass('open').animate({
'padding-bottom': '20px'
}, 300, function() {
//animation complete
});
}

else {
$('header').addClass('open').animate({
'padding-bottom': '150px'
}, 300, function() {
$('header p').fadeIn();
});
}

});​

最佳答案

这样做似乎更容易:

$('header').on({
mouseenter: function(e) {
if (!$(this).is('.open')) {
$(this).stop(true, true).delay(500).animate({'padding-bottom': '40px' }, 150, function() {
//function complete
});
}
},
mouseleave: function(e) {
if (!$(this).is('.open')) {
$(this).stop(true, true).animate({'padding-bottom': '20px'}, 150, function() {
//function complete
});
}
},
click: function() {
if ($(this).is('.open')) {
$(this).find('p').fadeOut(100).end().removeClass('open').stop(true, true).animate({'padding-bottom': '20px'}, 300, function() {
//animation complete
});
}else{
$(this).addClass('open').stop(true, true).animate({'padding-bottom': '150px'}, 300, function() {
$('p', this).fadeIn();
});
}
}
});​

关于javascript - jQuery:单击时,阻止 mouseenter 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10788767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com