在幻灯片放映中显示图像名称

时间:2011-08-17 22:05:29

标签: php jquery

我一直在学习使用我在某个网站上看到的幻灯片代码。虽然我已经成功地将图像显示得很好,但是当幻灯片发生变化时,我无法弄清楚如何在图像旁边显示图像名称。

我有provided the code here。所以我需要你的帮助。我正在寻找的是每当幻灯片改变另一张图片时,我希望它旁边显示图片名称。

感谢您的支持。

更新 - 这是基于Gilly3建议的更新代码,但我仍然对如何显示名称感到困惑

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>JQuery Cycle Plugin - Pager Demo with Prev/Next Controls</title>
<link rel="stylesheet" type="text/css" media="screen" href="../jq.css" />
<link rel="stylesheet" type="text/css" media="screen" href="cycle.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="http://malsup.github.com/chili-1.7.pack.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.cycle.all.js"></script>

<style type="text/css">
#main { margin: 20px }
#nav { margin: 10px; position: relative }
#nav li { float: left; list-style: none}
#nav a { margin: 5px; padding: 3px 5px; border: 1px solid #ccc; background: #fc0; text-decoration: none }
#nav li.activeSlide a { background: #faa; color: black }
#nav a:focus { outline: none; }

</style>

<script type="text/javascript">
$(document).ready(function() {
     $('#slideshow').cycle({
          prev:    '.prev', // Setup prev links
          next:    '.next', // Setup next links
          pager:   '.nav',       // Setup pager navs

         before: function () {
        $("#name").text(this.alt);
    }
     }); 
});
</script>

<style type="text/css">
#left, #slideshow, #right { float: left; width: 200px; }
</style>
</head>
<body>

<!-- left nav bar -->
<div id="left">
    <a href="#"><span class="prev">Prev</span></a> 
    <a href="#"><span class="next">Next</span></a>

    <ul class="nav"></ul>
</div>

<!-- slideshow -->
<div id="slideshow">

 <?php
                 mysql_connect("localhost", "root", "")or die("cannot connect");
                 mysql_select_db($db_name)or die("cannot select DB");

                 $data = mysql_query("SELECT * FROM people") or die(mysql_error());
                 while($info = mysql_fetch_array( $data )){
                 echo "<img src=\"http://localhost:8080/about/images/".$info['photo'] . "\" alt=\"".$info['name'] ."\"/>";
  }
?>

</div>

<div id="name">
HELP ME PRINT THE NAME HERE
</div>
<!-- right nav bar -->
<div id="right">
    <a href="#"><span class="prev">Prev</span></a> 
    <a href="#"><span class="next">Next</span></a>
    <ul class="nav"></ul>
</div>

</div>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

使用beforeafter事件中的任何一个,具体取决于您希望更改名称的时间。

$('#slideshow').cycle({
    prev: '.prev',
    next: '.next',
    pager: '.nav',
    before: function () {
        $("#name").text(this.alt);
    }
});

您需要在php中使用该名称填充alt。如果您不想添加工具提示,请添加title=""

echo "<img src=\"http://localhost:8080/people/uploads/".$info['pic'] . "\" alt=\"".$info['name'] . "\" title=\"\" />";

答案 1 :(得分:0)

以下是我认为应该有效的方法:

为每个图像添加“数据名称”属性。类似的东西:

echo "<img src='http://localhost:8080/people/uploads/".$info['pic']."' data-name='".$info['name']."'/>";

在jquery.cycle插件中为'onPrevNextEvent'设置一个选项。可能类似于:

$('#slideshow').cycle({
    prev:    '.prev',
    next:    '.next',
    pager:   '.nav',
    onPrevNextEvent:   function(isNext, zeroBasedSlideIndex, slideElement){
        var name = slideElement.data('name');
        $("#name").html(name);
    }
});

希望有所帮助。

鲍勃