<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fancybox &#8211; DesireLabs</title>
	<atom:link href="/tag/fancybox/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Développement web, marketing digital, et référencement</description>
	<lastBuildDate>Tue, 06 Jun 2017 17:34:36 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">67143140</site>	<item>
		<title>Au moins une raison possible au fait que fancybox ne s&#8217;exécute qu&#8217;au second click</title>
		<link>/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/</link>
		<comments>/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/#comments</comments>
		<pubDate>Wed, 10 Sep 2014 09:07:48 +0000</pubDate>
		<dc:creator><![CDATA[Franck]]></dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[fancybox]]></category>

		<guid isPermaLink="false">/?p=238</guid>
		<description><![CDATA[<p>Je vais parler aujourd&#8217;hui d&#8217;une petite aventure qui m&#8217;est arrivée avec fancybox. Pour les besoins d&#8217;un projet WordPress utilisant le plugin Team, j&#8217;avais pour mission de masquer les éléments affichés sauf la photo, puis d&#8217;afficher ces éléments dans une fancybox au click sur la photo. Problème : fancybox ne s&#8217;exécute qu&#8217;au second click. Et il &#8230; <a href="/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/" class="more-link">Continuer la lecture de <span class="screen-reader-text">Au moins une raison possible au fait que fancybox ne s&#8217;exécute qu&#8217;au second click</span></a></p>
<p>L’article <a rel="nofollow" href="/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/">Au moins une raison possible au fait que fancybox ne s&rsquo;exécute qu&rsquo;au second click</a> est apparu en premier sur <a rel="nofollow" href="/">DesireLabs</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Je vais parler aujourd&rsquo;hui d&rsquo;une petite aventure qui m&rsquo;est arrivée avec fancybox. Pour les besoins d&rsquo;un projet WordPress utilisant le plugin Team, j&rsquo;avais pour mission de masquer les éléments affichés sauf la photo, puis d&rsquo;afficher ces éléments dans une fancybox au click sur la photo. Problème : fancybox ne s&rsquo;exécute qu&rsquo;au second click. Et il y a une raison à celà !<span id="more-238"></span>Voici la partie html :</p>
<p></p><pre class="crayon-plain-tag">&lt;div class="ns-bp-team-box"&gt;
    &lt;div class="ns-bp-team-box-inner"&gt;
        &lt;div class="member-img"&gt;
            &lt;img width="400" height="400" alt="17d560b" class="attachment-full wp-post-image" src="http://site.me/img/17d560b.jpg"&gt;
        &lt;/div&gt;    &lt;a rel="lightbox" class="fancybox" href="#"&gt;
            &lt;h4 style="text-decoration: underline; cursor: pointer;"&gt;Jane Do&lt;/h4&gt;
        &lt;/a&gt;

        &lt;div class="member-role"&gt;Project manager&lt;/div&gt;
        &lt;p style="display: none;"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/p&gt;
        &lt;div class="member-social"&gt;
            &lt;ul&gt;
                &lt;li class="member-social-email"&gt;&lt;a data-original-title="Mail" href="mailto:mail@mail.me"&gt;Email me&lt;/a&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre><p></p>
<p>Le but du jeu est de masquer par exemple la balise &lt;p&gt; pour ensuite l&rsquo;injecter lors du clic sur le nom (&lt;a&gt; &lt;h4&gt;) dans une fancybox.</p>
<h4>La démarche me semblait simple :</h4>
<ul>masquer le contenu</p>
<li>créer un click event</li>
<li>récupérer le contenu dans une variable à ce moment là</li>
<li>le passer en valeur de « content » dans fancybox</li>
</ul>
<p>Voici le code js :</p>
<p></p><pre class="crayon-plain-tag">// Team View 
$ = jQuery.noConflict();
$(document).ready(function () {
    var teamBox = $('.ns-bp-team-box');
    // hide contents
    var contents = teamBox.find($('.ns-bp-team-box-inner p')).hide();
    // fancybox - on click on the name, fancybox appears with the p content text
    $('.fancybox').on('click', function(e){
        var content = $(this).parent().parent().find($('p')).text();
        $(this).fancybox({
            content: content,
            padding : 20,
            maxWidth : '600px',
            maxHeigh : '800px'
        });
    });
});</pre><p></p>
<p><a href="http://jsfiddle.net/vv1hpn5L/8/" target="_blank">Voici le jsFiddle </a></p>
<p><strong>Erreur</strong> : obligé de cliquer 2x pour faire apparaitre la fancybox.</p>
<p>En réalité ce qui se passe, c&rsquo;est que lorsqu&rsquo;on attache l&rsquo;event click, on se contente de binder le lien .fancybox, mais aucun trigger event n&rsquo;est initialisé.<br />
Ce qu&rsquo;il faut faire, c&rsquo;est chaîner le .fancybox() directement après l&rsquo;event click.</p>
<p>Voici la partie html à nouveau avec un href qui pointe vers une div vide et masquée :</p>
<p></p><pre class="crayon-plain-tag">&lt;div class="ns-bp-team-box"&gt;
    &lt;div class="ns-bp-team-box-inner"&gt;
        &lt;div class="member-img"&gt;
            &lt;img width="400" height="400" alt="17d560b" class="attachment-full wp-post-image" src="http://site.me/img/17d560b.jpg"&gt;
        &lt;/div&gt;    &lt;a rel="lightbox" class="fancybox" href="#target"&gt;
            &lt;h4 style="text-decoration: underline; cursor: pointer;"&gt;Jane Do&lt;/h4&gt;
        &lt;/a&gt;

        &lt;div class="member-role"&gt;Project manager&lt;/div&gt;
        &lt;p style="display: none;"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/p&gt;
        &lt;div class="member-social"&gt;
            &lt;ul&gt;
                &lt;li class="member-social-email"&gt;&lt;a data-original-title="Mail" href="mailto:mail@mail.me"&gt;Email me&lt;/a&gt;

                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div id="target" style="display:none"&gt;&lt;/div&gt;</pre><p></p>
<p>et le js corrigé :</p>
<p></p><pre class="crayon-plain-tag">// Team View 
$ = jQuery.noConflict();
$(document).ready(function () {
    var teamBox = $('.ns-bp-team-box');
    var content;
    var target = $('#target');
    // hide contents
    var contents = $(this).find($('.ns-bp-team-box-inner p')).hide();
    // Binds .fancybox to fancybox THEN trigger it right after
    $('.fancybox').on('click', function (e) {
        e.preventDefault();
        // Get content and had it to the #target div
        content = $(this).parent().parent().find($('p')).text();
        target.html(content);
    }).fancybox({ // trigger fancybox
        content: target,
        padding: 20,
        maxWidth: '600px',
        maxHeigh: '800px',
        afterClose: function () {
            // empty the #target
            target.html();
        }
    });
});</pre><p></p>
<p><a href="http://jsfiddle.net/vfwa29tk/2/" target="_blank"> Et le jsFiddle <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></a></p>
<p>Voilà, c&rsquo;est tout. Celà fait partie de ces subtilités inhérentes au javascript. Hope this&rsquo;ll help <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a rel="nofollow" href="/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/">Au moins une raison possible au fait que fancybox ne s&rsquo;exécute qu&rsquo;au second click</a> est apparu en premier sur <a rel="nofollow" href="/">DesireLabs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>/au-moins-raison-possible-au-fait-fancybox-sexecute-quau-second-click/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">238</post-id>	</item>
	</channel>
</rss>
