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.
How can I do this? For example, in the code below, it should return 'it works' to console. Instead it prints 'doesnt work'. Please help!!
<a href="#test-popup" class="open-popup-link" myatt="hello">Show inline popup</a>
<script src="jquery.magnetic.custom.js"></script>
<script>
    $(document).ready(function() {
      $('.open-popup-link').magnificPopup({
        type:'inline',
        midClick: true,
        callbacks: {
          open: function() {
            if ($(this).attr('myatt')=="hello") 
            { 
              // do something 
              console.log("it works");
            }
            else
            {
              console.log("doesnt work");
            }
          },
          close: function() {
          }
        }
      });
    });
</script>
<div id="test-popup" class="white-popup mfp-hide">
  Popup content
</div>
                For Magnific Popup v0.9.8
var magnificPopup = $.magnificPopup.instance,
              cur = magnificPopup.st.el;
console.log(cur.attr('myatt'));
                        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 :)
For v. 0.9.9:
this.currItem.el
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With