我正在使用此代码进行幻灯片放映。我似乎无法在不丢失“名称”div中的名称的情况下使图像可点击。
我想要的是能够点击幻灯片上的图片并能够转到详细信息页面。每当我点击图像时,名称就不会显示在'name'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>
感谢您的协助
答案 0 :(得分:0)
从未亲自使用cycle
插件,但我认为您根本没有附加点击回调。相反,您将其附加在before
上,这会在图片开始交换时name
显示div
。有关详细信息,请参阅cycle
plugin reference
要在点击时显示图像名称,请使用以下代码:
$('.clickable_image').click(function(){
$('#name').html($(this).attr('alt'));
});
不要忘记在图片中添加课程clickable_image
。
另外,如果您计划动态添加图片,live
功能可能会有所帮助。
答案 1 :(得分:0)
我不确定这是否会影响jQuery代码,因为我现在无法测试它,但你没有结束A标记。</ p>
应该是这样的:
echo "<a href=\"show.php?id=".$info['id']."\"><img src=\"http://localhost:8080/about/images/".$info['photo'] . "\" alt=\"".$info['name'] ."\"/></a>";
答案 2 :(得分:0)
问题来自循环定义
中之前的参数function () { $("#name").text(this.alt); }
应该是
function () { $("#name").text($(this).children("img").attr("alt")); }
我现在无法测试它。