2

奇怪的问题。

使用 jquery ui 效果如下:

<a href="in" style="position:absolute;" ><img src="images/img.png" id="perlabot"  ></a>
$('#perlabot').on('mouseenter', function () {
     $(this).effect("shake", { times:2, distance: 3}, 120);
});

它可以工作,但在 IE 和 Firefox 上,即使鼠标在图像中间,图像也会一直抖动。似乎运动图像一直触发 mouseenter 事件?无法解决这个问题,奇怪的问题。在 chrome 上它只触发一次。

4

2 回答 2

2

我没有找到真正解决您的问题的方法,但是您可以通过检查变量是否具有特定值并在用户离开该区域时将其重置来轻松避免它。

var active = false;
$('#perlabot').on('mouseenter', function () {
    if (active === false) {
        active = true;
        $(this).effect("shake", {
            times: 2,
            distance: 3
        }, 120);
    }
}).mouseleave(function () {
    active = false;
});

可能不是解决它的最聪明的方法,但它在我测试过的每个浏览器(Firefox、Chrome、Opera、IE 10 和 9)中都能正常工作

jsfiddle

于 2013-05-15T15:13:48.080 回答
1

试试这个选项。与上述答案类似的概念,但我认为更强大。(例如没有全局状态变量)

function shakeIt(obj)
{
    obj.mouseleave(function () {
        obj.on("mouseenter", function () { shakeIt(obj); });
        obj.off("mouseleave");
    });
    obj.off("mouseenter");
    obj.effect("shake", { distance: "3", times: "2" }, 120);
}
$("#perlabot").on("mouseenter", function () { shakeIt($(this)); });
于 2013-10-09T21:11:28.603 回答