我最近尝试将jQuery的effect('scale')函数与jQuery中的hover()函数一起使用。这个想法是在mouseenter上放大div元素,并在mouseleave上将其缩小到正常。代码如下:

$('.boxgrid').hover(function(){
    $(this).effect('scale', {percent:125}, 1000);
}, function() {
    $(this).effect('scale', {percent:80}, 1000);
});

我尝试在jsfiddle中对此进行测试,但是当鼠标进入元素时,它不会放大和缩小,而是会不断放大。您可以看到jsfiddle here。我的问题是如何解决?我的理解是mouseenter事件仅被触发一次,并在mouseleaves事件被触发时重置,但这似乎是另外一个说法?我想念什么吗?任何帮助是极大的赞赏。

最佳答案

每当动画结束时,它将调用悬停函数。我对其进行了如下修改,并且似乎可以正常工作:

window.boxScaled = false;
$('.boxgrid').hover(function(){
    if(!window.boxScaled) {
        window.boxScaled = true;
        $(this).effect('scale', {percent:125}, 1000);
    }
}, function() {
    if(window.boxScaled) {
        window.boxScaled = false;
    $(this).effect('scale', {percent:80}, 1000)
        }
});

10-02 18:11
查看更多