2012-02-13 37 views
1

我有這樣的代碼形式:顯示通過點擊一個mysql選擇查詢的不同結果中的鏈接提交while循環

CSS文件:

#answerform { 
    display: none; 
} 

PHP文件:

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 

<?php 
    $sql="SELECT comment FROM comments 
ORDER BY comments.id DESC"; 

$result = mysql_query($sql) or trigger_error (mysql_error ()); 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<div>"; 
    echo $row['comment']; 
    echo "</br>"; 

    // Answer to comment 
    echo "<a id=hrefanswer href='#'> Answer </a>"; 

    // Answer form 
    echo "<div id=answerform>"; 
    echo "<input type='text' value='' name='answer' id='answer'/>"; 
    echo "</div>"; 


    echo "</div>"; 
    } 
    ?> 

<script> 

     $('#hrefanswer').click(function(){ 
      $(this).hide(); 
      $('#answerform').show(); 
      }); 

</script> 

我使用代碼來顯示一些註釋,使用mysql select查詢,並且在每個註釋中都有一個鏈接(答案)。點擊鏈接時,我想隱藏鏈接,同時顯示錶單提交。問題是這隻發生在最後的評論中,而不是在選擇mysql查詢的每一條評論中。爲什麼?

+1

HTML元素上的ID必須是唯一的 - 如果您使用循環動態創建它們,則需要某種增量計數器以確保您附加到這些元素的ID實際上是唯一的(這他們不在你的代碼中)。或者,更好的辦法是不要使用ID,而是使用類,它們可以應用於多個元素。 – 2012-02-13 12:47:48

+0

非常感謝! – user1206724 2012-02-13 13:02:54

回答

0

問題是因爲您複製了在循環中添加的div的Id - ids必須是唯一的。

更改adiv使用類:

echo "<a class=hrefanswer href='#'> Answer </a>"; 
// more code 
echo "<div class=answerform>"; 

然後修改您的jQuery這樣的:

$('.hrefanswer').click(function() { 
    $(this).hide().next(".answerform").show(); 
}); 

而且,你的PHP文件缺少</script>在頂部,而你應該用引號括住每個HTML屬性。

+0

非常感謝!它正在工作! – user1206724 2012-02-13 12:59:17

相關問題