2011-12-28 199 views
1

我有一個while循環顯示選擇查詢的結果。然後,對於查詢返回的每個結果,有一個鏈接一旦被點擊,就會顯示一個消息表單。再次單擊鏈接,消息窗體將被隱藏。它是使用JQuery插件製作的。現在的問題是,如果我點擊鏈接,所有結果將顯示消息表單,而不是僅顯示一個,這應該來自鏈接被點擊的結果。代碼如下所示:只顯示一個WHILE循環結果

PHP + HTML

<?php 
    $query = mysql_query(......) or die(mysql_error()); 
    while($row = mysql_fetch_assoc($query)){ 
     $id = $row['Id']; 
     echo "<a class='hideMessageForm' href='#foo?id=" . $row['Id'] . "'>" . $row['Name'] . "</a>" .  
     "<div id='foo' class='showMessageForm'> 
      <form action='process.php' method='post'> 
       <input type='hidden' name='id' value='" .$id "'/> 
       <input type='text' name='message' value=''/> 
       <input type='submit' name='sendMessage' value='Send Message'/> 
      </form> 
     </div>"; 
    } 
?> 

的JavaScript

$(document).ready(function(){ 

    $(".showMessageForm").hide(); 
    $(".hideMessageForm").show(); 

    $('.hideMessageForm').click(function(){ 
    $(".showMessageForm").slideToggle(); 
    }); 

}); 

讓我來解釋我希望發生

例如東西,該查詢返回3個結果(結果#1,#2,#3)。每個結果都顯示引用foo div的鏈接。如果我點擊結果#1中的鏈接,#2和#3也會彈出消息表單。點擊3個結果中的任何一個的鏈接將顯示3個消息表單。我只想要選擇鏈接的結果是唯一彈出消息表單的結果。謝謝!

+1

也許可以使用.remove之前另一個鏈接被點擊? – 2011-12-28 03:40:35

+0

@RPM如何?對不起,我對Jquery很新。 – 2011-12-28 03:43:12

+1

不知道你在這裏試圖得到什麼。您生成一系列從數據庫中拉出ID號的''標籤。然後輸出一個ID從查詢字符串中拉出的表單?這兩者如何相互關聯? – 2011-12-28 03:43:21

回答

2

這就是你想要的。 http://jsfiddle.net/qEeZf/

您正在顯示/隱藏類的所有元素。您只想顯示或隱藏點擊鏈接的下一個元素。 (看到你的PHP代碼,我假設div始終是鏈接後的下一個元素)。

$(document).ready(function(){ 

    $(".showMessageForm").hide(); 
    $(".hideMessageForm").show(); 

    $('.hideMessageForm').click(function(){ 
    $(this).next(".showMessageForm").slideToggle(); 
    }); 

}); 
+0

在我將您的代碼替換爲您的代碼後,表單現在始終顯示,無法隱藏。該鏈接也消失了。 – 2011-12-28 03:53:30

+0

檢查我發佈的jsfiddle鏈接上的工作演示。你想對嗎? – Virendra 2011-12-28 03:54:24

+0

此外,要分配的ID是動態插入的。這是一段時間的循環。 – 2011-12-28 03:55:17

0
"<form action='process.php' method='post'> 
       <input type='hidden' name='id' value='".$id".'/> // Here was error 
       <input type='text' name='message' value=''/> 
       <input type='submit' name='sendMessage' value='Send Message'/> 
</form>" 
+0

請不要介意,它對我來說非常合適。只有一個錯字錯誤。 – 2011-12-28 03:50:22

1

的PHP/MySQL的(你有在PHP/HTML的格式設置了一些錯誤。我糾正他們。)

<?php 
$query = mysql_query(......) or die(mysql_error()); 
while($row = mysql_fetch_assoc($query)){ 
    $id = $row['Id']; 
    echo "<a class='hideMessageForm' href='#foo" . $row['Id'] . "'>" . $row['Name'] . "</a>" .  
    "<div id='foo" . $row['Id'] . "'' class='showMessageForm'> 
     <form action='process.php' method='post'> 
      <input type='hidden' name='id' value='" . $row['Id'] . "'/> 
      <input type='text' name='message' value=''/> 
      <input type='submit' name='sendMessage' value='Send Message'/> 
     </form> 
    </div>"; 
} 
?> 

jQuery的.....

$(".hideMessageForm").click(function() { 
var dropD = $(this).attr("href"); 
if ($(dropD + ".opened").length) { 
$(".opened").slideToggle(300).removeClass("opened"); 
} else { 
$(".opened").slideToggle(300).removeClass("opened"); 
$(dropD).slideToggle(300).addClass("opened"); 
} 
return false; 
}); 

三網融合

.showMessageForm { display: none;} 
.opened { display: block; } 

和現場DEMO HERE

+0

我用你的代碼,但點擊鏈接不顯示消息表格 – 2011-12-28 04:23:25

+0

檢查你的php/html格式。正如我發佈的,你在那裏有幾個錯誤。有趣的..喜歡我的coe ..但在別處給了答案。 – Scott 2011-12-28 05:10:07

+0

因爲別處工作完美:) – 2011-12-28 22:06:41