0
Ich habe einen Anker mit einem Datenattribut (ein Objekt von Bildern), auf Mouseenter möchte ich diese Bilder durchlaufen, dann auf mouseleave möchte ich diese Schleife zu beenden.Stoppen Sie jede Schleife bei Maus verlassen
Hier ist, was ich bisher habe, aber es scheint, die volle each
läuft, vor der shouldRotateImages
Variablen ändern, auch mit der Verzögerung. Ich bin also etwas verloren, was ich jetzt tun kann.
var shouldRotateThumbnails = false;
$(document).on('mouseenter', '#videos-list a', function() {
shouldRotateThumbnails = true;
rotateThumbnails($(this));
});
$(document).on('mouseleave', '#videos-list a', function() {
shouldRotateThumbnails = false;
});
function rotateThumbnails(video) {
var thumbnails = video.data('thumbnails');
var image = video.find('img');
$.each(thumbnails, function (k, v) {
if (!shouldRotateThumbnails) {
return false;
}
setTimeout(function() {
image.attr('src', v);
}, (300 * k));
});
}
Der Code ist asynchron und geplant, später auszuführen, was unabhängig davon geschieht, wenn Sie den Timer deaktivieren. Es ist besser, kein Schleifenkonstrukt wie '$ .each()' zu verwenden, sondern stattdessen 'setInterval', das sich selbst löscht, wenn es zum letzten Bild kommt oder' shouldRotateThumbnails' 'false' wird, je nachdem, was zuerst eintritt. –
Genau das habe ich gebraucht, danke! – Karl
Gern geschehen. –