2011-06-16 156 views
1

我想使用PHP關聯數組來回顯文本和圖像的不同值爲不同的jQuery幻燈片在同一頁面上的實例的HTML。這裏的HTML:調用PHP函數兩次,只能工作一次

<div class='slide'> 
    <div class='mosaic-block fade'> 
     <div class='mosaic-overlay'> 
     <div class='text'><p>This is the text!</p></div> 
      </div> 
     <div class='mosaic-image'><img src='imgs/the-img.png'/></div> 
    </div> <!-- mosaic-block fade --> 
</div> <!-- .slide --> ` 

我寫陣列對於每種類型的包含每個幻燈片的文本和圖像幻燈片的,這裏的和例如:

$my_content = array( 
     'image1.png' => 'image1 text!', 
     'image2.png' => 'image2 text!' 
     ); 

然後寫一個函數參數的類別幻燈片和內容:

function gallery_content($content) { 
    foreach ($content as $img => $txt) { 
    echo "<div class='slide'> 
     <div class='mosaic-block fade'> 
     <div class='mosaic-overlay'> 
      <div class='text'><p>".$txt."</p></div></div> 
      <div class='mosaic-image'><img src='imgs/other/".$img."'/></div> 
     </div> <!-- mosaic-block fade --> 
     </div> <!-- .slide --> "; 
} 

我這樣稱呼它:gallery_content($my_content);和它的作品真的很好。但是當我嘗試再次調用另一組值時,只有第一個實例似乎工作。我試圖直接使用數組而不是變量作爲參數,併爲每個幻燈片製作單獨的函數,但保持相同的結果。

爲什麼函數不能被調用多次?提前致謝。

+0

你第二次打電話時的行爲是什麼? – kinakuta 2011-06-16 23:59:48

+0

似乎工作:http://codepad.org/ZWhRPYPJ – 2011-06-16 23:59:51

+0

你確定這是一個PHP的問題,而不是一個jQuery的問題?嘗試創建一個純html文件,並手動輸入幾個圖像的數據到jQuery幻燈片的兩個實例 - 它是否工作? – Ord 2011-06-17 00:00:38

回答

0

查看在最終頁面(HTML)上生成的源代碼來判斷PHP是否完成其工作。我認爲您的結果「高級」(DIV)可能具有相同的ID或其他屬性,因此jQuery將其激活,因此只有一個正在正確運行(第一個),第二個未運行。

希望有所幫助。

+0

我認爲你是對的 - 當我將幻燈片類更改爲「幻燈片1」和「幻燈片2」時,幻燈片都顯示在適當的位置,但其他jQuery功能(隱藏滾動,導航div)不顯示。我會做一些更多的嘗試和看看。 – notlaura 2011-06-17 18:26:49

+0

是的,肯定是問題。在單個頁面上顯示多個幻燈片比我想像的要複雜得多 - 看起來[jQuery Cycle Plugin](http://malsup.com/jquery/cycle/)是一個常見的解決方案。謝謝! – notlaura 2011-06-17 21:53:48

+0

我認爲你應該接受其中一個答案作爲答案,因爲你有你的解決方案。 :) – Pheonix 2011-06-17 22:28:00

1

我的猜測是PHP正在做它的工作。檢查輸出文檔的來源,你應該看到正確數量的畫廊)。我懷疑類gallery的CSS規則,例如絕對定位它的CSS規則只會導致一個圖庫可見。如果你使用內嵌CSS(通常不是可以接受的)OK,你可以讓PHP(如頂部)基礎上,畫廊數量添加自定義位置值:

function gallery_content($content) { 
    $num = 0; 
    foreach ($content as $img => $txt) { 
    echo "<div class='slide' style='top: ".(100 + 50*$num)."px'> 
     <div class='mosaic-block fade'> 
     <div class='mosaic-overlay'> 
      <div class='text'><p>".$txt."</p></div></div> 
      <div class='mosaic-image'><img src='imgs/other/".$img."'/></div> 
     </div> <!-- mosaic-block fade --> 
     </div> <!-- .slide --> "; 
} 

上面的例子給人的第一gallery元素頂部100px(100 + 50 * 0),第二個元素頂部150px,tird 200px等等。您也可以使用一些CSS3和新的calc()功能來替代此功能,但CSS3選擇器是實驗性的,並且在某些較舊的瀏覽器中不受支持。使用PHP和內聯樣式將是您最安全的選擇。