滚动到区域后打开弹出窗口

Open popup after scroll to area

我有一个在页面加载时消失的弹出窗口:

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

在弹出窗口中有 link 滚动到 div #section 其中包含另一个 link 触发另一个弹出窗口:

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

在 div #section 中打开我的弹出窗口的代码(准备在那里有另一个弹出窗口)。

$(".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();       
});

我的 div #section 包含以下 link:

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

我想在用户单击第一个弹出窗口(在页面加载时显示)中的 link "Read more" 时自动打开另一个弹出窗口 #modal-1

我尝试使用 scrollTo 插件通过以下代码实现此功能,但不幸的是,这无法正常工作。

第一个弹出窗口在页面加载时消失,我单击 link 到#section,紧接着该脚本显示警报 window(用于测试)关闭警报后 window 页面滚动到#部分。

如何使其仅在 window 滚动到 div #section(到达它)后才显示 alert/trigger 弹出窗口?

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

我认为您必须将警报放在 setTimeout 中。警报将在页面事件有机会完成之前触发。即使您将它放在延迟为 0 的 setTimeout 中,setTimeout 也会将警报放到堆栈底部,让您的代码有时间完成。试试这个:

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

  })
});