Without each()
or click()
just add the beforeLoad
to your script, like this
$(".fancybox").fancybox({ autoScale: false, // href : $('.fancybox').attr('id'), // don't need this type: 'iframe', padding: 0, closeClick: false, // other options beforeLoad: function () { var url = $(this.element).attr("id"); this.href = url } }); // fancybox
NOTE : this is for fancybox v2.0.6 +
On the other hand, a more elegant solution should use the (HTML5) data-*
attribute to set href
(it would be strange to set id="images/01.jpg"
otherwise) so that you can do:
<a href="#" id="id01" data-href="images/01.jpg" ...
and your callback
beforeLoad: function(){ var url= $(this.element).data("href"); this.href = url }
and use the id
attribute for what is intended for.
EDIT . It is best to use the special data-fancybox-href
attribute in your anchor, for example:
<a id="item01" data-fancybox-href="http://jsfiddle.net" class="fancybox" rel="gallery" href="javascript:;">jsfiddle</a>
and use a simple script without a callback like
$(".fancybox").fancybox({ // API options autoScale: false, type: 'iframe', padding: 0, closeClick: false });
See JSFIDDLE
source share