2011-11-08 13 views
3

私はquicksand jQueryのこの例を使用しています。今jQueryクイックサンドとファンシーボックスの使用に関する問題

Making a Beautiful HTML5 Portfolio

、私は画像をクリックしたときに光ボックスを開きたいです。このため私はfancybox jQueryを使用しています。しかし、この問題は、ファンシーボックスのjQueryの例で<p>タグを持っている場合、この美しいHTML5ポートフォリオ(クイックサンドjQuery)のサンプル画像は<Ul> <LI>タグにあります。

ul liの間でアンカータグを選択できません。

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 

     <title>Making a Beautiful HTML5 Portfolio | Tutorialzine Demo</title> 

     <!-- Our CSS stylesheet file --> 
     <link rel="stylesheet" href="assets/css/styles.css" /> 

     <!--[if lt IE 9]> 
      <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
     <![endif]--> 

     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
     <script> 
      !window.jQuery && document.write('<script src="assets/js/jquery-1.4.3.min.js"><\/script>'); 
     </script> 

     <script src="assets/js/jquery.quicksand.js"></script> 
     <script src="assets/js/script.js"></script> 

     <script type="text/javascript" src="./fancybox/jquery.fancybox-1.3.4.pack.js"></script> 
     <link rel="stylesheet" type="text/css" href="./fancybox/jquery.fancybox-1.3.4.css" media="screen" /> 
     <link rel="stylesheet" type="text/css" href="./fancybox/style.css" /> 
     <script type="text/javascript"> 
      $(document).ready(function() { 

       $("a#example2").fancybox({ 
        'overlayShow' : false, 
        'transitionIn' : 'elastic', 
        'transitionOut' : 'elastic' 
       }); 
       $("ul li a#example2").fancybox({ 
        'overlayShow' : false, 
        'transitionIn' : 'elastic', 
        'transitionOut' : 'elastic' 
       }); 


      }); 
     </script> 
    </head> 

    <body> 

     <header> 
      <h1>My Portfolio</h1> 
     </header> 

     <nav id="filter"></nav> 

     <section id="container"> 
     <p> 
     <a id="example2" href="assets/img/shots/1.jpg"><img src="assets/img/shots/1.jpg" alt="Illustration" /></a> 
     </p> 
     <p> 
      <ul id="stage"> 
       <li data-tags="Print Design"><a id="example2" href="#"><img src="assets/img/shots/1.jpg" alt="Illustration" /></a></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/2.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design"><img src="assets/img/shots/3.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Print Design"><img src="assets/img/shots/4.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design"><img src="assets/img/shots/5.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design,Print Design"><img src="assets/img/shots/6.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/7.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design"><img src="assets/img/shots/8.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design"><img src="assets/img/shots/9.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design"><img src="assets/img/shots/10.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/11.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/12.jpg" alt="Illustration" /></li> 
       <li data-tags="Print Design"><img src="assets/img/shots/13.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design"><img src="assets/img/shots/14.jpg" alt="Illustration" /></li> 
       <li data-tags="Print Design"><img src="assets/img/shots/15.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design"><img src="assets/img/shots/16.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design,Print Design"><img src="assets/img/shots/17.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design"><img src="assets/img/shots/18.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Print Design"><img src="assets/img/shots/19.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/20.jpg" alt="Illustration" /></li> 
       <li data-tags="Web Design,Logo Design"><img src="assets/img/shots/21.jpg" alt="Illustration" /></li> 
       <li data-tags="Print Design"><img src="assets/img/shots/22.jpg" alt="Illustration" /></li> 
       <li data-tags="Logo Design,Print Design"><img src="assets/img/shots/23.jpg" alt="Illustration" /></li> 
      </ul> 

     </section> 

     <footer> 
      <h2>Making a Beautiful HTML5 Portfolio</h2> 
      <a class="tzine" href="http://tutorialzine.com/2011/06/beautiful-portfolio-html5-jquery/">Read &amp; Download on</a> 
     </footer> 



    </body> 
</html> 

このコードイメージでは、Pタグのイメージはファンシーボックスで動作していますが、ul liタグではありません。

私はこの問題は、IDを再利用http://fyels.in/Y95

+1

大部分の人は、あまりにも多くのコードを読んでも大丈夫です。可能であれば、問題がまだ存在するレベルまで最小化してみてくださいが、コードは小さくなります。 –

+0

@アーマンオハイオ州は、jQueryの選択の最後のコードを参照して、私は彼らがこれを書いた主な問題です。 –

+0

fancyboxを2回適用しようとする理由はありますか? –

答えて

4

固定されています。

メインの理由ファンシーボックスはクイックサンとプラグインがどのように機能するのかによってあなたのコードでクイックサンを取得したくありませんでした。クイックサンディング(可視構造を再構成するときに要素をアニメートするため)は、要素を複製し、それらのコピーをDOMに注入します。シャッフルが完了した後、これらの要素に関連付けられたイベントはすべて消えます。このため、fancyboxはこれらの要素に対して機能しませんでした。

これを修正する方法は、quicksand plugin documentation(他のプラグインとの統合の項)に説明されています。コールバック関数をクイックサンドに2番目の要素として渡します。そのコールバックは、シャッフルが完了すると実行されます。私たちの場合、シャッフルされた要素にfancyboxを見つけて再適用する責任があります。

ここfancyboxと流砂を使用しての作業例です:http://jsfiddle.net/E2vLq/29/

コードに関する二つのことに注意してください:

  • をLIのすべてのリンクは、今クラスは「私たちはドン(をfsandています同じIDを繰り返し使用する)。
  • コールバックをquicksandに渡すと、a.fsandセレクタに一致するすべての要素にfancyboxが再度適用されます。同じサイト上の2つの要素(それは一般的に禁止し、HTML仕様に従っている)ため、同じIDを使用

  • は別にそのから、他の二つの問題がありました。
  • ULの後に段落要素を閉じることができませんでした。
+0

あなたの例はここでは動作しませんhttp://jsfiddle.net/wtk_pl/E2vLq/ fancyboxをクリックした後画像 –

+0

最後に解決しました!本当に素敵な解決策(CLASS)が与えられ、あなたから説明します。ありがとう!! –

+1

クール、喜んで:) – WTK

3

が無効なコード全体

ここ

<script type="text/javascript"> 
       $(document).ready(function() { 

        $("a#example2").fancybox({ 
         'overlayShow' : false, 
         'transitionIn' : 'elastic', 
         'transitionOut' : 'elastic' 
        }); 
        $("ul li a#example2").fancybox({ 
         'overlayShow' : false, 
         'transitionIn' : 'elastic', 
         'transitionOut' : 'elastic' 
        }); 


       }); 
    </script> 
だと思います。例えば ​​- 要素を参照するための異なるメカニズムを使用 ul

  • aに異なるIDを使用

    1. のいずれかを試します使用クラス

  • +0

    私は別のクラスにも試してみました。 http://fyels.in/Y95から自分のコードをダウンロードしてください。 –

    +0

    いいえ動作していません両方を試してみました –

    関連する問題