2011-06-16 161 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和内联样式将是您最安全的选择。