Javascript 组合锚定、url变量和切换可见性
我正在使用此代码切换可见性Javascript 组合锚定、url变量和切换可见性,javascript,php,jquery,variables,anchor,Javascript,Php,Jquery,Variables,Anchor,我正在使用此代码切换可见性 var prevId; function toggle_visibility(id) { if(prevId){ $("#"+prevId).slideToggle("slow"); } var e = document.getElementById(id); $(e).slideToggle("slow"); prevId = id; } 在显示的div上,我使用它来显示数据库中的数据 <?php in
var prevId;
function toggle_visibility(id) {
if(prevId){
$("#"+prevId).slideToggle("slow");
}
var e = document.getElementById(id);
$(e).slideToggle("slow");
prevId = id;
}
在显示的div上,我使用它来显示数据库中的数据
<?php
include"scripts/connect_to_mysql.php";
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$news="";
$sql=mysql_query("SELECT *
FROM `news`
ORDER BY date DESC");
$newsCount=mysql_num_rows($sql);
if ($newsCount>0) {
while($row=mysql_fetch_array($sql)){
$id=$row["id"];
$title=$row["title"];
$text=$row["text"];
$date=$row["date"];
$news.=' <table width="800" border="0">
<tr>
<td style="width:150px;">' . $date . '</td>
<td style="width:600px; overflow:hidden;"><a href="?id=' . $id . '#" onclick="toggle_visibility(\'news_det\');" style="color:#b19057;" >' . $title . '</a></td>
<td style="width:50px"><a href="#" onclick="toggle_visibility(\'news_det\');" style="color:#000;">...more</a></td>
</tr>
</table>
';
}
}else {
$news="No news available yet";
}
?>
对于解决问题的代码,我有两条建议
单向
将JavaScript函数更改为如下内容
var prevId;
function toggle_visibility(id, newsId) {
if (prevId) {
$("#"+prevId).slideToggle("slow");
}
$("#"+id).slideToggle("slow");
if (id=="news_det" && newsId!=undefined) {
var val=$("#det_"+newsId).val();
$('#news_detDiv').html(val);//Where you are putting text that div id
}
prevId = id;
return false;
}
将html代码段从$news
变量更改为
$news.='<table width="800" border="0">
<tr>
<td style="width:150px;">' . $date . '</td>
<td style="width:600px; overflow:hidden;"><a href="#" onclick="toggle_visibility(\'news_det\', '.$id.');" style="color:#b19057;">' . $title . '</a></td>
<td style="width:50px"><a href="#" onclick="toggle_visibility(\'news_det\', '.$id.');" style="color:#000;">...more</a></td>
<input type="hidden" value="'.$text.'" id="det_'.$id.'">
</tr>
</table>';
$news.='
' . $日期。”
';
通过这种方式,您将保存服务器调用,因为您将只在页面中存储所有文本,并且在单击标题和更多时,您将始终看到相关的帖子数据。而且你的效果也会起作用
第二种方式
您应该在单击title和more时使用JQuery AJAX调用从服务器获取数据,而不是刷新页面
快乐编码 你的代码中的news\u det
是什么?news\u det是一个隐藏的div,单击它就会显示出来。你能用一些虚拟数据对你的代码进行工作演示吗?你可以在这里看到它newsite2.reload-it.grso我猜你想做的是在点击标题时显示细节,在点击新闻选项卡时再次隐藏细节,然后再次显示列表,对吗?你能提供一个AJAX解决方案吗???我以前从未尝试过用AJAX编码,所以我不知道从哪里开始。谢谢你抽出时间@mohanahuja函数newsdata(id,currid){$(“#news_exp”).slideUp(“slow”);$(“#news_detx1”).slideDown(“slow”);$(“#news_detx1”).load(“test.php?id=“+currid”);return false;}效果非常好!!!
$news.='<table width="800" border="0">
<tr>
<td style="width:150px;">' . $date . '</td>
<td style="width:600px; overflow:hidden;"><a href="#" onclick="toggle_visibility(\'news_det\', '.$id.');" style="color:#b19057;">' . $title . '</a></td>
<td style="width:50px"><a href="#" onclick="toggle_visibility(\'news_det\', '.$id.');" style="color:#000;">...more</a></td>
<input type="hidden" value="'.$text.'" id="det_'.$id.'">
</tr>
</table>';