代码之家  ›  专栏  ›  技术社区  ›  Paul Chu

将放大弹出窗口添加到动态创建的元素

  •  0
  • Paul Chu  · 技术社区  · 7 年前

    我用下面的代码工作,它会弹出我想要的内容

    function init_magnificPopup()
    {
        $('.popup-with-zoom-anim').magnificPopup({
    
            type: 'inline',
    
            fixedContentPos: false,
            fixedBgPos: true,
    
            overflowY: 'auto',
    
            closeBtnInside: true,
            preloader: false,
    
            midClick: true,
            removalDelay: 300,
            mainClass: 'my-mfp-zoom-in'
        });
    }
    
    $(document).ready(function() {
        init_magnificPopup();
    });
    

    HTML

    <a class="btn btn-primary popup-with-zoom-anim" href="#dialog">dialog popup</a> 
    
    <div id="dialog" class="zoom-anim-dialog mfp-hide">
    popup content
    </div>
    

    现在,我如何使用下面动态创建的带有类的标记 .popup-with-zoom-anim ?

    var content_string +=  '<a class="popup-with-zoom-anim" href="#dialog">dynamic dialog popup</a>';
    $( "body" ).html(content_string);
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   David Liang    6 年前

    你也可以使用 delegate option

    $('body').magnificPopup({
        delegate: 'a.popup-with-zoom-anim',
        type: 'inline',
        ...
    });
    
        2
  •  0
  •   Paul Chu    7 年前

    answer 使用哪一个 .on() 方法和链接 .magnificPopup('open');

    $("body").on('click', '.popup-with-zoom-anim', function(){ 
    
         $(this).magnificPopup({
    
                    type: 'inline',
    
                    fixedContentPos: false,
                    fixedBgPos: true,
    
                    overflowY: 'auto',
    
                    closeBtnInside: true,
                    preloader: false,
    
                    midClick: true,
                    removalDelay: 300,
                    mainClass: 'my-mfp-zoom-in'
                }).magnificPopup('open');
    
    });