Wie man ein Ereignis nach 3 Sekunden Schweben auslöst
Lesezeit: 3 Minuten
irgendwie
Ich habe ein div und möchte ein Ereignis erst auslösen, nachdem der Benutzer seine Maus 3 Sekunden lang ununterbrochen bewegt hat. Mein Code funktioniert nicht gut, weil er direkt nach dem Schweben ausgelöst wird und nicht “wartet”.
Lustige Anmerkung: Mit Internet Explorer 11 (möglicherweise anderen Browsern / Versionen) wird das Aktivieren der Warnung und das Bewegen der Maus über die Warnung dazu führen, dass noch viel mehr geöffnet werden.
– DerPyroEagle
30. Juni 2015 um 15:28 Uhr
@ThePyroEagle Wow, das ist ein sehr seltsamer Browser! Es stellt sich heraus, dass IE11 in diesem Fall das Mouseout-Ereignis auslöst, obwohl die Warnung oben steht, was nachfolgende Interaktionen mit der Seite verhindern würde. Seltsame Macke.
– dfq
30. Juni 2015 um 15:50 Uhr
jakutsa
Sie können dies erreichen, indem Sie delay Möglichkeit:
@JonP, ja, du hast Recht. Sie können jedes Ereignis in jquery auslösen, indem Sie einfach ändern popover . popover stammt aus der Bootstrap js-Bibliothek.
Ich mag diese Lösung. Können Sie dies jedem Container mit einer bestimmten Klasse und nicht mit einer ID anhängen?
– Soma-Feiertag
26. Mai 2017 um 22:11 Uhr
@SomaHoliday: Ja, natürlich kannst du es verwenden ClassName als Selektor anstelle einer ID.. benutz einfach $("div.ClassName")
– Pratik Schah
28. Mai 2017 um 7:33 Uhr
var st;
$(".inner_pic").mouseenter(function(e) {
var that = this;
st = setTimeout(function() {
alert('testing');
}, 3000);
}).mouseleave(function() {
clearTimeout( st );
alert('finish');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="inner_pic">
<h3>Picture Here - Hover me</h3>
</div>
Markus
Angenommen, Sie haben eine div mit id von myelementdu kannst das:
var divMouseOver;
$('#myelement').mouseover(function() {
divMouseOver = setTimeout(function() {
alert("3 seconds!"); //change this to your action
}, 3000);
});
$('#myelement').mouseout(function() {
if (divMouseOver) {
clearTimeout(divMouseOver);
}
});
Übrigens, es gibt eine hilfreiche klärende Frage zur Verwendung mouseenter und mouseover hier: Jquery mouseenter() vs mouseover(). Berücksichtigen Sie dies bei der Auswahl, welche Sie verwenden möchten.
divMouseDown sollte sein divMouseOver obwohl.
– Sebastian Nette
30. Juni 2015 um 13:44 Uhr
PHP-Wurm…
Versuchen Sie diesen Code:
<div id='a' style="border:2px solid black" >
<h3>Hove On me</h3>
For 2000 milliseconds. You will get an alert.
</br>
</div>
$(document).ready(function(){
var delay=2000, setTimeoutConst;
$('#a').hover(function(){
setTimeoutConst = setTimeout(function(){
/* Do Some Stuff*/
alert('Thank You!');
}, delay);
},function(){
clearTimeout(setTimeoutConst );
})
})
</script>
Mehr Code anzeigen. Erstellen Sie ein MCVE
– Amit
30. Juni 2015 um 13:36 Uhr
jsfiddle.net/nn33vwvn scheint mir zu funktionieren. Was scheint das Problem zu sein?
– Daniel Casserley
30. Juni 2015 um 13:38 Uhr