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>
and use data-attributes, to example data-myatt - that get:
The clicked element can be accessed within the callback using:
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)"
First, i recommend to you to use the data attribute ( data-custom="foo" ) or a known attribute.
HTML :
jQuery :
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 Magnific Popup v0.9.8
For v. 0.9.9:
this.currItem.el
Also, inside
open: function(item) {}
,this.content
might help.. It will return the div of the content being shown. useful with thechange: function () {}
as well. Hope it helps someone like me.