dongqie7806 2012-01-06 16:04
浏览 36
已采纳

jQuery prettyPhoto无法使用Sponsor Flip Wall插件

I’m using Sponsor Flip Wall for displaying references on my webpage. Every reference should have few pictures previewed with Pretty Photo lightbox. At first flip side there is a reference picture, and after it's flipped over, I have reference description and below it a link for the gallery...

<?php

// Each sponsor is an element of the $sponsors array:

$reference = array(
    array('hram_hrista_spasitelja','Najzahtjevnija građevina u regiji u posljednje vrijeme. 23 000 elemenata kompletno napravljenih u našim pogonima, nekoliko rozeta izrađenih water-jetom, brojni stubovi i reljefi, ograde, mozaici te kompletni podovi izrađeni u mozaiku rezanom water-jetom, te brojni ostali zahtjevni elementi urađeni suvremenim CNC strojevima i završno urađeni umjetničkom rukom klesara.','../slike/reference/slike/hram_hrista_spasitelja/01.jpg','Hram Hrista Spasitelja - Banja Luka')
);

// Randomizing the order of sponsors:

shuffle($reference);

?>

<div class="tekst">

    <div class="referenceListHolder">

        <?php

            // Looping through the array:

            foreach($reference as $referenca)
            {
                echo'
                    <div class="reference" title="Kliknite za okretanje">
                        <div class="referenceFlip">
                            <img src="../slike/reference/'.$referenca[0].'.png" alt="Više o: '.$referenca[0].'" />
                        </div>

                        <div class="referenceData">
                            <div class="referenceDescription">
                                '.$referenca[1].'
                            </div>
                            <div class="referenceURL">
                                <a href="'.$referenca[2].'" rel="reference" title="'.$referenca[3].'">Galerija slika</a>
                            </div>
                        </div>
                    </div>                    
                ';
            }

        ?>       

        <div class="clear"></div>

    </div>

</div>

<script type="text/javascript">

    /* PRETTY PHOTO */
        $("a[rel^='reference']").prettyPhoto({
            animationSpeed: 'slow', /* fast/slow/normal */
            slideshow: 4000, /* false OR interval time in ms */
            padding: 40, /* padding for each side of the picture */
            opacity: 0.35, /* Value betwee 0 and 1 */
            overlay_gallery: false, /* If set to true, a gallery will overlay the fullscreen image on mouse over */
            showTitle: true, /* true/false */
            allowresize: false, /* true/false */
            counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
            social_tools: false, /* html or false to disable */
            deeplinking: false, /* Allow prettyPhoto to update the url to enable deeplinking. */
            keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */
            theme: 'dark_rounded' /* pp_default / light_rounded / dark_rounded / light_square / dark_square / facebook */
        });
    /* KRAJ PRETTY PHOTO */ 

</script>

Pretty Photo doesn’t get fired this way, but the picture is being loaded in a new tab! If I place the gallery link outside .referenceData div (eg inside .sponsorFlip div), it works fine... I guess there is some conflict with .sponsorFlip click() event and prettyPhoto click() event ???

Here is the code for flipping the references...

//REFERENCE - FLIP PLUGIN
    $('.referenceFlip').live("click",function(){

        // $(this) point to the clicked .sponsorFlip element (caching it in elem for speed):                
        var elem = $(this);

        // data('flipped') is a flag we set when we flip the element:               
        if(elem.data('flipped'))
        {
            // If the element has already been flipped, use the revertFlip method
            // defined by the plug-in to revert to the default state automatically:                 
            elem.revertFlip();

            //Prilikom vraćanja (revert) reference - vraća height na 100% (kako je i bio)
            $(this).css("height", "100%");

            // Unsetting the flag:
            elem.data('flipped',false)
        }
        else
        {               
            // Using the flip method defined by the plugin:                 
            elem.flip({
                direction:'lr',
                speed: 350,
                dontChangeColor: true,
                onBefore: function(){
                    // Insert the contents of the .sponsorData div (hidden from view with display:none)
                    // into the clicked .sponsorFlip div before the flipping animation starts:                          
                    elem.html(elem.siblings('.referenceData').html());
                }
            });

            //Ako dođe do overflow-a, povećava height reference za 50 kako bi stao sav tekst
            if($(this)[0].clientHeight < $(this)[0].scrollHeight)
                $(this).css("height", $(this).children().height()+50);

            // Setting the flag:
            elem.data('flipped',true);
        }

    });

Does anyone know where's the problem ?

  • 写回答

2条回答 默认 最新

  • duangou1953 2012-02-14 01:40
    关注

    I Finally managed to fix sponsor-flip-wall to work with PrettyPhoto !!!

    • Put the "rel" attribute to href:
    <div class="referenceURL">
      <a href="'.$referenca[2].'" rel="reference" title="'.$referenca[3].'">Galerija slika</a>
    </div>
    
    • PrettyPhoto has to be initiated inside $('.referenceFlip').live("click",function(){...}. Place the code just before: elem.data('flipped',true);

    $("a[rel^='reference']").prettyPhoto();

    !!! It should be working now !!!


    Here is the whole js code slightly changed from the original to suite my needs:
    //FLIP PLUGIN
    $('.referenceFlip').live("click",function(){
      // $(this) point to the clicked .sponsorFlip element (caching it in elem for speed):              
      var elem = $(this);
    
      //Eliminates unnecessary PrettyPhoto gallery links
      elem.siblings().find('.referenceURL a:not(:first)').html("");
    
      //data('flipped') is a flag we set when we flip the element:              
      if(elem.data('flipped'))
      {
        // If the element has already been flipped, use the revertFlip method
        // defined by the plug-in to revert to the default state automatically:                 
        elem.revertFlip();
    
        //After reverting the flip - sets the height back to 100% (as it was)
        elem.css("height", "100%");             
    
        // Unsetting the flag:
        elem.data('flipped',false)
      }
      else
      {                 
        // Using the flip method defined by the plugin:                 
        elem.flip({
          direction:'lr',
          speed: 350,
          dontChangeColor: true,
          onBefore: function(){
            // Insert the contents of the .sponsorData div (hidden from view with display:none)
            // into the clicked .sponsorFlip div before the flipping animation starts:  
        elem.html(elem.siblings('.referenceData').html());  
          } 
        });
    
        //If the div overflows, increase the div's height for +50 to fit the entire text      
        if(elem[0].clientHeight < elem[0].scrollHeight)
          elem.css("height", elem.children().height()+50);
    
        /* PRETTY PHOTO INITIATION */
        $("a[rel^='reference']").prettyPhoto({
          animationSpeed: 'slow', /* fast/slow/normal */
          slideshow: 4000, /* false OR interval time in ms */
          padding: 40, /* padding for each side of the picture */
          opacity: 0.35, /* Value betwee 0 and 1 */
          overlay_gallery: false, /* If set to true, a gallery will overlay the fullscreen image on mouse over */
          showTitle: true, /* true/false */
          allowresize: false, /* true/false */
          counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
          social_tools: false, /* html or false to disable */
          deeplinking: false, /* Allow prettyPhoto to update the url to enable deeplinking. */
          keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */
          theme: 'dark_rounded', /* pp_default / light_rounded / dark_rounded / light_square / dark_square / facebook */
        });
        /* END OF PRETTY PHOTO INITIATION */    
    
        // Setting the flag:
        elem.data('flipped',true);
      }
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用