I have to run fancybox with trigger click in my website, the problem that i discovered is that with this method if you click on elements inside the fancy box, the fancy box will close and appear again (blinks) .
i want fancybox to prevent blinking when i click on elements inside the box and when i click on those elements i don't want to see any changes, thats all :)
i created demo for this problem
<div id="a1">
<p>Click on the box</p>
<div class="r"></div>
</div>
$(document).ready(function() {
$('#a1').fancybox({
afterClose: function() {
console.log('closed :( ');
}
}).click();// or .trigger('click');
});
any idea?
The problem with your code is that you are making the selector
#a1
to act as both : the trigger and the target of fancybox therefore any click on itself will fire fancybox over and over again.You would need to create another selector (the trigger) that targets the
#a1
element likeif you don't want the element
.fancybox
be visible, just add adisplay:none
propertyThen your js
See JSFIDDLE
EDIT : looking at you sample JSFIDDLE, things could have been much simpler.
Having just this html
you could use this code
where no
click
is needed.See you updated JSFIDDLE
I don't know it will be helpful or not just try this,
I had the same symptom of an unclickable Fancybox overlay. My client wanted to be able to link and automatically open up a certain Fancybox, like http://yoursite.com/#signup to open up an inline 'signup' Fancybox overlay. Thanks to JFK I realized I was triggering and targeting the element with the ID of 'signup' rather than the element with the href attribute of '#signup'. I got it to hook onto the last portion of the URL (i.e. #signup) and look up the matching 'a' href attribute, and to trigger a click on that element.
The demo below doesn't really help portray this, but you get to see the code.
http://jsfiddle.net/ca7no4yp/2/
The juicy bit:
Use this below html,add
id
to<div>
and<a class="fancybox" rel="group" href="#r"><div id="r" class="r"></div></a>
check here
----------------------Update----------------
add afterShow() to your jquery
Check again