Magnific popup: Get current element in callback

后端 未结 6 1277
借酒劲吻你
借酒劲吻你 2020-12-06 05:58

In Magnific Popup, I want to get an attribute in the link that is clicked and use it in a callback function (using callbacks: open) to make some changes in the DOM.

相关标签:
6条回答
  • 2020-12-06 06:30

    The clicked element can be accessed within the callback using:

    this.st.el
    

    Inside the callback, "this" refers to $.magnificPopup.instance.

    Under public properties:

    "magnificPopup.st.el // Target clicked element that opened popup (works if popup is initialized from DOM element)"

    0 讨论(0)
  • 2020-12-06 06:32

    For Magnific Popup v0.9.8

    var magnificPopup = $.magnificPopup.instance,
                  cur = magnificPopup.st.el;
    console.log(cur.attr('myatt'));
    
    0 讨论(0)
  • 2020-12-06 06:33

    First, i recommend to you to use the data attribute ( data-custom="foo" ) or a known attribute.

    HTML :

      <a href="photo.jpg" class="popup" data-custom="dsaad">Do it!</a>
      <a href="photo.png" class="popup" data-custom="mycustomdata">Do it!</a>
    

    jQuery :

    $('.popup').magnificPopup({
      type : 'image',
      callbacks : {
        open : function(){
          var mp = $.magnificPopup.instance,
              t = $(mp.currItem.el[0]);
    
          console.log( t.data('custom') );
        }
      }
    });
    

    I do not know if a better way exists. Actually you can read their documentation about public methods and you will see there. I tested the code above and everything works fine :)

    0 讨论(0)
  • 2020-12-06 06:41

    For v. 0.9.9:

    this.currItem.el

    0 讨论(0)
  • 2020-12-06 06:49

    Also, inside open: function(item) {}, this.content might help.. It will return the div of the content being shown. useful with the change: function () {} as well. Hope it helps someone like me.

    0 讨论(0)
  • 2020-12-06 06:52
    // "item.el" is a target DOM element (if present)
    // "item.src" is a source that you may modify
    open: function(item) {}
    

    and use data-attributes, to example data-myatt - that get:

    $(this).data('myatt')
    
    0 讨论(0)
提交回复
热议问题