.load()没有切换的小部分

时间:2012-10-23 11:44:01

标签: php jquery html load toggle

我有一个会话流,每3秒刷新一次jQuery的.load()。

这个系统有效,但在每个对话中,我都有一个回答按钮,用.toggle()滑动表单(textarea和提交按钮)。

要显示流程,我会使用PHP一段时间。

我的问题是,当按.load()加载,点击了回答按钮时,表单再次隐藏,文本也包含。

<div id="the_river_loading">
<?php
$sql_the_river = 'SELECT u.nickname, u.firstname, u.lastname, u.main_photo, u.locality,
             id_conversation, id_messages, owner, participants, text, date
          FROM users AS u
          INNER JOIN the_river
          ON u.nickname = owner
          WHERE answer = 0
          ORDER BY date DESC';
$result_the_river = mysqli_query($mysqli, $sql_the_river);

$count = 0;
while ($data_the_river = mysqli_fetch_assoc($result_the_river))
{
   $count++;
   echo '<div class="message_container_news">'; // Start block conversation

   echo '<a href="/profile/' . $nickname . '" class="name_links" style="vertical-align: top; font-size: 16px;">
   <img src="' . $main_photo . '"  title="' . $name . '" class="members_actu_photo" />' . $name . '</a>
   <span style="vertical-align: top">, ' . $locality . '</span><span style="float: right; font-size: 12px;">Posté le Octobre 25, 2012</span>
   <p style="margin-top: 5px;">' . $data_the_river['text'] . '</p>
   <div class="btnAnswer_nb">' . $count_answer . '</div> Answers
   <a href="/news/' . $data_the_river['id_conversation'] . '" style="margin-left: 100px; display: inline;" class="global_links">See conversation</a>

   <div class="btnAnswer_news" id="btnAnswer_news_id_' . $count . '">Reply</div>
   <form method="post" id="display_form_id_' . $count . '" action="" style="display: none;">
      <br />
      <textarea name="answer_text"></textarea><br />
      <input type="submit" name="answer_valid_id_' . $count . '" value="Post" />
   </form>
   </div>'; // End block conversation
}
?>
</div>

<script type="text/javascript">     
$(".btnAnswer_news").live("click", function(){
   var num_show = this.id.replace(/\D/g, "");
   $("#display_form_id_" + num_show).toggle("fast");
});

var auto_refresh = setInterval(
   function() {
      $("#the_river_loading").load("/home" + " .message_container_news");
   }, 3000
);
</script>

很高兴看到你。

2 个答案:

答案 0 :(得分:0)

这是因为如果再次将内容加载到容器中,每个js应用的样式将被删除(因为它们是通过style =“”应用的,并且会刷新)。您应该将表单和按钮移动到另一个Div,这不在加载Div。

答案 1 :(得分:0)

如果我正确理解您的问题(您的描述性不是很明显),您只是想在再次点击时不隐藏该表单,使用show()代替toggle(),所以请更换您的以下一行:

$("#display_form_id_" + num_show).toggle("fast");

这个:

$("#display_form_id_" + num_show).show("fast");

如果你想保留textarea的文字,你可以这样:

var auto_refresh = setInterval(
   function() {
      tx = $("#the_river_loading textarea[name='answer_text']").val();
      $("#the_river_loading").load("/home" + " .message_container_news", function(){
          $("#the_river_loading textarea[name='answer_text']").val(tx);
      });
   }, 3000
);