Javascript 如何防止鼠标进入/离开次数过多

Javascript 如何防止鼠标进入/离开次数过多,javascript,jquery,html,Javascript,Jquery,Html,我有一段代码,基本上是这样的:如果你滚动这个,那么另一个东西就会出现,如果你滚动,那么它就会消失 问题是,如果我拿着鼠标翻滚/翻滚太多次,元素就会出现/消失太多次(因为我错误地为它创建了很多事件) 我的代码如下所示: $('div.accordionContent').mouseenter(function() { $(this).find(".something").animate({left: 0}, 300)}).mouseleave(function() { $(this

我有一段代码,基本上是这样的:如果你滚动这个,那么另一个东西就会出现,如果你滚动,那么它就会消失

问题是,如果我拿着鼠标翻滚/翻滚太多次,元素就会出现/消失太多次(因为我错误地为它创建了很多事件)

我的代码如下所示:

$('div.accordionContent').mouseenter(function()
{
    $(this).find(".something").animate({left: 0}, 300)}).mouseleave(function() {
    $(this).find(".something").animate({
    left: -200}, 500);;
}); 
如何告诉它避免多次悬停


我使用jQuery 1.4.3,如果这有帮助的话。

不要避免多次触发,而是尝试在启动另一个动画之前停止动画

$('div.accordionContent').mouseenter(function() {
    $(this).find(".something").stop().animate(...)
}); 

问题是你在旧事件结束之前就启动了新事件。为了防止出现这种情况,您可以停止侦听(删除侦听器)未来事件,直到当前事件完成其任务。

有一个选项“队列”。如果将其设置为
false
,我认为事件不会触发太多。我想=)

如果你想用正确的方式做,我建议你这样做

$('div.accordionContent').bind('mouseenter mouseleave', function(e){

    var $something = $(this).find(".something");

    if(e.type == 'mouseenter'){
        $something.animate({left:0}, {queue:false, duration:300 });
    } else {
        $something.animate({left:-200}, {queue:false, duration:500 });
    }
});
你可以试试这个:

$('div.accordionContent').mouseenter(function(){
    var div = $(this);
    clearTimeout(window.me);
    window.me = setTimeout(function(){
        div.find(".something").animate({left: 0}, 300)}).mouseleave(function(){
            $(this).find(".something").animate({
            left: -200}, 500); 
        });
    },50);
}); 

这里的想法是,如果尚未达到50延迟,则取消当前鼠标指针。

好选项!就我而言,我没有使用动画(只是添加/删除类名),因此不能使用
stop
。有什么解决办法吗?