jquery切换正在跳过其他所有项目

时间:2014-02-11 00:40:54

标签: javascript php jquery html

我是Javascript和JQuery的新手。现在,我正在尝试建立一个评论系统,您点击回复以显示包含该表单。但出于某种原因,第一个评论回复会提示表格,但不会提出下一个评论。我可以提出第3条评论的答复,但不是第4条评论。这种情况一直持续下去。这是php用于获取评论的功能。

function display_children($parent, $level){
global $db_upload;
global $comments;
if ($adj = $db_upload->query("SELECT * FROM comment WHERE parent_id = '$parent' AND url_id = '$comments'")){

    if ($adj->num_rows){
    while ($row = $adj->fetch_assoc()){

    echo str_repeat("&nbsp&nbsp&nbsp&nbsp&nbsp|", $level). $row['m_username']. " on ". $row['date'].'<br>';
    echo str_repeat("&nbsp&nbsp&nbsp&nbsp&nbsp|", $level).$row['comment'].'<br>'.'<br>';
?>


<a href="#" class="mix">
<small>reply</small><br><br><br>
</a>
<div class="reply_comment" style="display:none">

<table>
<tr><td>
<textarea name="comment_text" id="comment_text" rows="5" cols="50"></textarea>
</td></tr>
<tr><td>
<input type="button" id="comment_process" value="save" />
<input type="hidden" id="c" value="<?php echo $cmt; ?>">
</tr></td>
</table>

</div>



<script type="text/javascript" src="../secure/jquery.js"></script>
    <script type="text/javascript" src="message.js"></script>   


<?php
    display_children($row['id'], $level+1);
}
}
}
}

这是我正在使用的jquery

$('.mix').click(function(){
$(this).next('.reply_comment').toggle();
});

2 个答案:

答案 0 :(得分:0)

您不断地反复包含相同的JS文件:

<script type="text/javascript" src="../secure/jquery.js"></script>
<script type="text/javascript" src="message.js"></script>  

你应该只需要这些(包括jquery之后)。

您也应该通过“ID”而不是按类来操作。

请执行以下操作:

<?php
function display_children($parent, $level){
  global $db_upload;
  global $comments;

  if ($adj = $db_upload->query("SELECT * FROM comment WHERE parent_id = '$parent' AND url_id = '$comments'")) {
    if ($adj->num_rows) {
      while ($row = $adj->fetch_assoc()) {

      echo str_repeat("&nbsp&nbsp&nbsp&nbsp&nbsp|", $level). $row['m_username']. " on ". $row['date'].'<br>';
      echo str_repeat("&nbsp&nbsp&nbsp&nbsp&nbsp|", $level).$row['comment'].'<br>'.'<br>';
?>


  <a href="#" class="mix" data-commentboxid="<?php echo $row['id']; ?>">
  <small>reply</small><br><br><br>
  </a>
  <div id="post-id-<?php echo $row['id']; ?>" class="reply_comment" style="display:none">

  <table>
    <tr>
      <td>
        <textarea name="comment_text" id="comment_text_for-<?php echo $row['id']; ?>" rows="5" cols="50"></textarea>
      </td>
    </tr>
    <tr>
      <td>
        <input type="button" id="comment_process_for-<?php echo $row['id']; ?>" value="save" />
        <input type="hidden" id="c_for-<?php echo $row['id']; ?>" value="<?php echo $cmt; ?>">
      </td>
    </tr>
  </table>

  </div>

  <?php
      display_children($row['id'], $level+1);

      }
    }
  }
}

?>

你的JS成了:

$('.mix').click(function(){
    $('#post-id-' + (this).attr('data-commentboxid')).toggle();
});

答案 1 :(得分:0)

这里有一些错误:

  • 您在html中拥有多个具有相同ID的项目(您只能拥有一个);
  • 您已在关闭表格之前切换了关闭行和关闭单元格标记。这可能会导致您的实际问题;
  • 您反复包含相同的脚本(这些脚本可能不应包含在此功能中,但位于页面的头部或底部的某处)。

您应该验证您的HTML,因为这可能是导致问题的原因。