96 Stimmen

Jquery-Hover-Ereignis verzögern?

Ich möchte ein Hover-Ereignis in Jquery zu verzögern. Ich lese aus einer Datei, wenn Benutzer über einen Link oder ein Etikett schwebt. Ich möchte nicht, dass dieses Ereignis sofort eintritt, wenn der Benutzer gerade die Maus über den Bildschirm bewegt. Gibt es eine Möglichkeit, das Auslösen des Ereignisses zu verzögern?

Ich danke Ihnen.

Beispiel-Code:

$(function() {
    $('#container a').hover(function() {
        $('<div id="fileinfo" />').load('ReadTextFileX.aspx',
            {filename:'file.txt'},
            function() {
                $(this).appendTo('#info');
            }
         );
    },
        function() { $('#info').remove(); }
    });
});

UPDATE: (1/14/09) Nach dem Hinzufügen des HoverIntent-Plugins wurde der obige Code in den folgenden geändert, um ihn zu implementieren. Sehr einfach zu implementieren.

$(function() {
    hiConfig = {
        sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
        interval: 200, // number = milliseconds for onMouseOver polling interval
        timeout: 200, // number = milliseconds delay before onMouseOut
        over: function() {
            $('<div id="fileinfo" />').load('ReadTextFileX.aspx', {filename:'file.txt'},
                function() {
                   $(this).appendTo('#info');
                }
             );
        }, // function = onMouseOver callback (REQUIRED)
        out: function() { $('#info').remove();  } // function = onMouseOut callback (REQUIRED)
    }
    $('#container a').hoverIntent(hiConfig)
}

1 Stimmen

Vielen Dank für die Bereitstellung der Verwendung für hoverIntent

-2voto

onekamil Punkte 1

Meine Lösung ist einfach. Verzögere das Öffnen des Menüs, wenn der Benutzer den Mauszeiger über 300ms auf dem Objekt hält:

var sleep = 0;
$('#category li').mouseenter(function() {
    sleep = 1;
    $('#category li').mouseleave(function() {
        sleep = 0;
    });
    var ob = $(this);
    setTimeout(function() {                         
        if(sleep) {
            // [...] Example:
            $('#'+ob.attr('rel')).show();
        }
    }, 300);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X