jQuery остановка мыши - PullRequest
       24

jQuery остановка мыши

1 голос
/ 15 февраля 2011

Английский перевод Феликса:

Я хочу создать меню, которое следует за курсором мыши и прекращает движение, если курсор находится на определенном расстоянии от него. Мое решение пока: Я создал два вложенных div. Во внутреннем div содержится меню. Внешний div предназначен для остановки меню. Если курсор перемещается по внешнему элементу div, внутренний элемент div должен остановиться и оставаться в нем до тех пор, пока курсор находится над ним. * РЕДАКТИРОВАТЬ: И меню должно остановиться тихо, но быстро.

Оригинальный немецкий:

ich möchte ein Menü erstellen приветствует меня в своем творчестве и доброжелательности. Mein Lösungsansatz ist folgender: Ich Baue 2 Ininchand Verschachtelte DIVs. Im inneren DIV ist das Menü vorhanden. Das äußere Div ist zum stoppen da. Также я хочу познакомиться с Mauszeiger в Das Außere Div Gehe Soll Das Innere DIV Стар Аббремсен и Штеен Блейбен, Соланж и Дрин Бин.

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. Я должен был поместить прозрачный GIF на внешний div. Теперь эта функция в порядке. Если я во внешнем или внутреннем div, div не перемещается, но он не останавливается быстро. Он должен остановиться очень мягко и быстро и не двигаться, то есть 200px, а затем останавливается или останавливается с помощью clearIntervall (). Должен ли я сделать еще один таймер?

...