如何动态添加图像和链接到旋转木马?

时间:2013-07-29 17:33:31

标签: javascript jquery joomla elastislide

我想了解这是如何运作的。

我想使用的jQuery轮播是Elastislide http://tympanus.net/codrops/2011/09/12/elastislide-responsive-carousel/

该网站为我们提供了我们需要使用的代码:

var carousel = $('#carousel').elastislide();
...
$('#carousel').append("<li><a href="#"><img src="images/10.jpg" alt="image03" /></a></li>");
carousel.add();

我还在jquery.elastislide.js文件中找到了那些行,但它被/ *

忽略了

这是HTML:

      <div>
        <div class="fixed-bar">
           <!-- Elastislide Carousel -->
           <ul id="carousel" class="elastislide-list">     
              <li><a href="http://www.site1.com"><img src="images/1.jpg" alt="img1" /></a></li>
              <li><a href="http://www.site2.com"><img src="images/2.jpg" alt="img2" /></a></li>
              <li><a href="http://www.site3.com"><img src="images/3.jpg" alt="img3" /></a></li>
              <li><a href="http://www.site4.com"><img src="images/4.jpg" alt="img4" /></a></li>
           </ul>
           <!-- End Elastislide Carousel -->
        </div>
     </div>
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
         <script type="text/javascript" src="js/jquerypp.custom.js"></script>
         <script type="text/javascript" src="js/jquery.elastislide.js"></script>
         <script type="text/javascript">      
            $( '#carousel' ).elastislide( {
            minItems : 1
             } );
          </script>

HTML显然会查找所有这些项目。 但是javascript根据可用的内容决定html中显示的内容,对吧?

所以我的猜测是html在我做任何事情之前需要看起来像这样:

               <!-- Elastislide Carousel -->
           <ul id="carousel" class="elastislide-list">     
           </ul>
           <!-- End Elastislide Carousel -->

我需要添加Javascript。 否则如何添加图像和链接等列表项? 有人可以证实这是正确的吗? 我不认为我在那之后就完成了,我需要在某个地方添加路径,也可能在javascript中添加。
否则它将如何知道它需要在哪个文件夹中查找?

为了使事情变得更复杂(或者可能不是),我试图在Joomla中这样做 我可以安装或多或少做类似于这个旋转木马的扩展的扩展,但我不想,因为所有归结为单击按钮而不是真正理解它。

谢谢。

2 个答案:

答案 0 :(得分:0)

  

但是javascript决定了html中显示的内容,   基于可用的,对吗?

可能有Javascript,PHP脚本甚至静态HTML标记来“决定”显示的内容。致电$('#carousel').elastislide();您只需告诉Elastislide插件,使用ul id="carousel"关于其当前内容制作旋转木马。这些内容(li s带有图片和链接)可能来自任何来源:

  • 只需驻留在静态HTML代码中,就像您的第二个样本

  • 一样
  • 由PHP或任何其他服务器脚本生成

  • 通过Javascript代码在客户端(在浏览器的浏览器中)生成 $('#carousel').append("<li><a href="#"><img src="images/10.jpg" alt="image03" /></a></li>");
    如果在调用$('#carousel').elastislide();之前使用JS 生成它们,则不必执行任何其他操作。
    但是如果你想在已经形成的轮播中添加项目,请在致电var carousel = $('#carousel').elastislide();后 - 使用相同的代码将新的li附加到轮播来源(ul),但在此之后你必须致电carousel.add();以'告知'Elastislide插件你已经更改了轮播来源,因此插件必须相应地更新其视觉表示。

补充:实际上,在Joomla中,您应该使用服务器端PHP代码来构建HTML轮播源(基于来自该CMS的一些数据),并且在客户端只需调用$('#carousel').elastislide();

答案 1 :(得分:0)

以下是使用Elastislide轮播的完整工作静态HTML页面

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="css/elastislide.css" />
  <script type="text/javascript" src="js/jquery.js"></script>
  <script type="text/javascript" src="js/jquerypp.custom.js"></script>
  <script type="text/javascript" src="js/modernizr.custom.17475.js"></script>
  <script type="text/javascript" src="js/jquery.elastislide.js"></script>
<head>
<body>

</body>
<ul id="carousel" class="elastislide-list">     
  <li><a href="1.jpg"><img src="1.jpg" alt="img1" /></a></li>
  <li><a href="2.jpg"><img src="2.jpg" alt="img2" /></a></li>
  <li><a href="3.jpg"><img src="3.jpg" alt="img3" /></a></li>
  <li><a href="4.jpg"><img src="4.jpg" alt="img4" /></a></li>
</ul>
<script type="text/javascript">      
  $('#carousel').elastislide();
</script>

<body>
</html>

请注意,文件结构很重要 - 对于此类HTML,您必须具备:
/ filanme.htm(或.php) - 页面本身
/ css / * - 包含css文件
/ js / * - 包括javascripts
/ images / * - Elastislide补充图像(包含在其包装中)

要使用PHP超文本预处理器生成这样的页面,您的步骤可能就像这些。

  1. 从Joomla CMS(或直接MySQL数据库)中检索有关哪些图像和链接站点管理员希望加载到轮播中的PHP数据。我很难说如何用Joomla做这个,因为我不经常使用它,所以我给出一个简单函数的例子,总是返回带有数据的'预煮'PHP数组。

  2. 获得数据后,生成形成轮播来源的ulli的标记,并在其后插入$('#carousel').elastislide();来插入脚本。

  3. 这是简单的,但正在运行的PHP代码示例:

    <?
    // such a funciton would be inside CMS, not in your code
    function CMS_get_carousel_data( $carousel_name ) {
      return array(
        array( 'link'=>'1.jpg', 'image'=>'1.jpg', 'alt_text'=>'1' ),
        array( 'link'=>'2.jpg', 'image'=>'2.jpg', 'alt_text'=>'2' ),
        array( 'link'=>'3.jpg', 'image'=>'3.jpg', 'alt_text'=>'3' ),
        array( 'link'=>'4.jpg', 'image'=>'4.jpg', 'alt_text'=>'4' )
      );
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <link rel="stylesheet" type="text/css" href="css/elastislide.css" />
      <script type="text/javascript" src="js/jquery.js"></script>
      <script type="text/javascript" src="js/jquerypp.custom.js"></script>
      <script type="text/javascript" src="js/modernizr.custom.17475.js"></script>
      <script type="text/javascript" src="js/jquery.elastislide.js"></script>
    <head>
    <body>
    <?
    // calling 'CMS' function to retrieve data to be displayed in the carousel
    $data = CMS_get_carousel_data('carousel_A');
    ?>
    </body>
    <ul id="carousel_A" class="elastislide-list">
      <? foreach( $data as $item ) { /* generating markup */ ?>
      <li>
        <a href="<?=$item['link']?>">
          <img src="<?=$item['image']?>" alt="<?=$item['alt_text']?>" />
        </a>
      </li>
      <? } ?>
    </ul>
    <script type="text/javascript">      
      $('#carousel_A').elastislide();
    </script>
    
    <body>
    </html>
    

    要实现这一点,您应该将上面的代码放在您网站上的.php文件中,将其他所需文件放到适当的文件夹中,当然,在Joomla CMS中找到真正的API来检索轮播数据并使用它