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.='
' . $日期。”
';
通过这种方式,您将保存服务器调用,因为您将只在页面中存储所有文本,并且在单击标题和更多时,您将始终看到相关的帖子数据。而且你的效果也会起作用

第二种方式

您应该在单击titlemore时使用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>';