2017-10-23 2 views
0

Ich habe Popup, das beim Laden der Seite schwindet:öffnen Popup nach Blättern zu Bereich

$("#popup").fadeIn(500).on("load", function(e){ 
    $('body').addClass('modalIn'); 
}); 

Innen Popup gibt es Link, scrollt #section div, die eine andere Verbindung enthält, die ein weiteres Popup-Trigger:

<a href="#section">learn more</a> 

Code, der mein Popup in div #section öffnet (vorbereitet, um dort noch ein popups zu haben).

$(".steps a").on("click", function(e){ 
    e.preventDefault(); 
    var selectedModal = $(this).data("modal"); 
    $(".modals").fadeIn(); 
    $(".modal").hide(); 
    $("#"+selectedModal).fadeIn(); 
    $('body').addClass('modalIn'); 
    $.scrollify.disable(); 
    $('body').on('scroll', function(e){ 
     e.preventDefault(); 
    }); 
}) 
$(".modals").on("click", function(){ 
    $(".modals, .modal").fadeOut(); 
    $('body').removeClass('modalIn'); 
    $.scrollify.enable();  
}); 

Mein div #section enthält folgenden Link:

<a href="#modal-1" data-target="#myModal" data-modal="modal-1">Open modal 1</a> 

ich ein weiteres Popup # modal-1 automatisch geöffnet werden soll, wenn Benutzer klicken Sie Link in der ersten Pop-up "mehr lesen" (das zeigt beim Laden der Seite).

Ich habe versucht, dies mit dem folgenden Code mit scrollTo Plugin zu machen, aber das funktioniert leider nicht.

Erste Popup-Fades beim Laden der Seite, ich klicke Link zu #section und gleich danach Skript zeigt Alarmfenster (für Tests) Nach dem Schließen der Alarmfenster-Seite scrollt zu #section.

Wie funktioniert es, um Alarm-/Trigger-Popup nur anzuzeigen, nachdem das Fenster zu div # section scrollt (erreicht)?

$('a[href="#section"]').click(function() { 
$(window).scrollTo('#section', { 
    onAfter: function() { 
     alert('test'); 
    } 
}) 
}); 

Antwort

1

Ich denke, Sie müssen die Warnung in einem SetTimeout setzen. Warnungen werden ausgelöst, bevor das Seitenereignis abgeschlossen werden kann. Selbst wenn Sie es in ein setTimeout mit 0 Verzögerung setzen, wird die Warnung durch den Befehl setTimeout an den unteren Rand des Stapels gesetzt, sodass der Rest der Codezeit abgeschlossen werden kann. Versuchen Sie Folgendes:

$('a[href="#section"]').click(function() { 
    $(window).scrollTo('#section', { 
    onAfter: function() { 
    setTimeout(function() { 
     alert('test'); 
    }, 100) 

    }) 
}); 
+0

Sie können 100 beliebig viele Male in Millisekunden ändern. Sie müssen möglicherweise damit spielen, um die beste Zeit herauszufinden, um die Modal-Eröffnung zu verzögern. –

Verwandte Themen