【问题标题】:Make Image Clickable on Slide Show在幻灯片放映中使图像可点击
【发布时间】:2011-08-18 19:39:12
【问题描述】:

我正在使用此代码进行幻灯片放映。我似乎无法在不丢失“名称”div 中的名称的情况下获得可点击的图像。

我想要的是能够单击幻灯片上的图片并能够转到详细信息页面。每当我获得可点击的图像时,名称都不会显示在“名称”div中;如果我删除链接,则会显示名称。

我不知道如何解决这个问题。

这是我正在使用的代码。

<!DOCTYPE html>

<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 )){
    <!--HERE ON THIS LINE---- > echo "<a href=\"show.php?id=".$info['id']."\"><img src=\"http://localhost:8080/about/images/".$info['photo'] . "\" alt=\"".$info['name'] ."\"/>"; 
  }
?>

</div>

 <div id="name">

 </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>

感谢您的帮助

【问题讨论】:

    标签: php jquery


    【解决方案1】:

    问题来自循环定义中的 before 参数

    function () { $("#name").text(this.alt); }
    

    应该是这样的

    function () { $("#name").text($(this).children("img").attr("alt")); }
    

    不过,我现在无法测试它。

    【讨论】:

    • 谢谢你,我会改变它,看看是否有帮助。
    • 这简直太棒了!谢谢你 - 它就像魔术一样工作:)
    【解决方案2】:

    从未亲自使用过cycle 插件,但我认为您根本没有将点击回调附加到图像。相反,您将其附加到before,这使得name 在图像开始交换时显示在您的div 中。详情见cycle plugin reference

    要在点击时显示图片名称,请使用以下代码:

    $('.clickable_image').click(function(){
        $('#name').html($(this).attr('alt'));
    });
    

    别忘了在你的图片中添加 clickable_image 类。

    另外,如果您计划动态添加图像,live 函数可能会有所帮助。

    【讨论】:

      【解决方案3】:

      我不确定这是否会影响 jQuery 代码,因为我现在无法对其进行测试,但您没有结束 A 标记。

      应该是这样的:

      echo "<a href=\"show.php?id=".$info['id']."\"><img src=\"http://localhost:8080/about/images/".$info['photo'] . "\" alt=\"".$info['name'] ."\"/></a>";
      

      【讨论】:

      • 我添加了结束 A 标记,但仍然没有任何区别。会继续努力。再次感谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多