jQuery mousemove停止

时间:2011-02-15 09:26:50

标签: jquery menu mousemove mouseleave

Felix的英文翻译:

我想创建一个跟随鼠标光标的菜单,如果光标距离它一定距离则停止移动。到目前为止我的解 我创建了两个嵌套的div。在内部div包含菜单。外部div用于停止菜单。如果光标在外部div上移动,只要光标悬停在它上面,内部div就应该停止并保持不变。 *编辑:菜单应该轻柔但很快停止。

原文德语:

ichmöchteeinMenüerstellen与beinen Mauszeiger verfolgt und inbestimmternäheinshenbleibt。 MeinLösungsansatz是folgender: Ich baue 2 ineinander verschachtelte DIVs。 Im inneren DIV istdasMenüvorhanden。 DasäußereDivist zum stoppen da。此外,还有一些名为“ußere”的电子邮件,电子邮箱版权所有DIV stark abbremsen und stehen bleiben,solange ich drin bin。

Hier mein derzeitiger Code(fw's:jQuery):

var div = jQuery("<div id='menubox'><div id='innerdiv'>&nbsp;</div></div>").appendTo("body");

    var mouseX = 300, mouseY = 300;
    jQuery(document).mousemove(function (el) {
        if (onMenu == false) {
            mouseX = el.pageX;
            mouseY = el.pageY;
        }
    });

    jQuery('#menubox').mouseenter(function (el) {
        onMenu = true;
        stopMoving();
    }).mouseleave(function (el) {
        onMenu = false;
        startMoving();
    });

    var xp = 0, yp = 0;
    function stopMoving() {
        clearTimeout(timer);
        timer = setTimeout(function () {
            clearInterval(loop);
        }, 100);
    }
    function startMoving() {
        clearTimeout(timer);
        clearInterval(loop);
        loop = setInterval(function () {
            xp += (mouseX - xp) / 20;
            yp += (mouseY - yp) / 20;
            jQuery('#menubox').css({ left: xp, top: yp });
        }, 40);
    }
    startMoving(); // StartMoving on Page Load

*编辑:我有一个IE Bug。我不得不在外部div放置一个透明的gif。现在这个功能还可以。如果im在外部或内部div中,div不会移动,但它不会很快停止。应该停止非常柔软和快速,不要移动,即200px,而不是使用clearIntervall()停止或停止。我应该再制作一个计时器吗?

0 个答案:

没有答案