2011-10-06 75 views
0

我不知道爲什麼這是不工作...jQuery的切換下一行表

HTML

<table> 
<tr> 
    <th>Name</th> 
    <th>Options</th> 
</tr> 
<?php // loop over items 
while ($row = mysql_fetch_assoc($qry)){ ?> 
    <tr> 
    <td><?=$row['name'];?></td> 
    <td<a href="#" class="trigger">Detail</a></td> 
    </tr> 
    <tr> 
    <td colspan="100%" class="details"> 
    stuff 
    </td> 
    </tr> 
    <?php 
} ?> 
</table> 

然後jQuery的我使用的是...

$(document).ready(function() { 
    $('.trigger').click(function() { 
    $(this).parents("table").siblings(".details").slideToggle(); 
    // also tried this... 
    // $(this).parents("table").nextAll(".details").slideToggle(); 
    return false; 
    }); 
}); 

我試過將細節類移動到TR。我想要的是當有人點擊「詳細」鏈接時,以下TR應該切換。我已在頂部表上放置了一個ID,並提醒了父母的attr('id'),這是有效的。將「.siblings」改爲「.find」切換全部。

感謝您的任何幫助。

回答

5

你的html格式不正確 和你的jquery沒有做選擇正確的項目...你去了表元素,然後嘗試一會兒,但沒有結果。

試試這個網站:

<table> 
<tr> 
    <th>Name</th> 
    <th>Options</th> 
</tr> 
<?php // loop over items 
while ($row = mysql_fetch_assoc($qry)){ ?> 
    <tr> 
    <td><?=$row['name'];?></td> 
    <td><a href="#" class="trigger">Detail</a></td> 
    </tr> 
    <tr class="details"> 
    <td colspan="2"> 
    stuff 
    </td> 
    </tr> 
    <?php 
} ?> 
</table> 

與這個jQuery:

$(function(){ 
    $('.trigger').click(function() { 
    $(this).parents("tr").next().slideToggle(); 
    return false; 
    }); 
}); 

工作示例: http://jsfiddle.net/saelfaer/Z6MzS/

編輯 只是提什麼我改變

你有一個<td>開放標籤,它缺少了它的>,我也將class="details"移動到要顯示/隱藏的<tr>元素。

在jquery中,我改變了你的選擇器上表,選擇了.next()錶行(這實際上是需要顯示或隱藏的行,然後切換那個行)。

的改進可以使: 隱藏在第一

tr.details { 
    display: none; 
} 
+0

好答案tr.details槽的CSS,但我建議不要停止事件的傳播與「返回false」,除非你有一個很好的理由的http:// jsfiddle.net/Z6MzS/1/ – Sinetheta

+0

啊回報錯誤是從t他的OP的腳本,而不是真正的這個答案的目標,但你仍然很好的提及,如果OP不知道,他已經可以從中學習。感謝您的支持! – Sander

+0

非常感謝。我隱藏了它,但是因爲沒有發生任何事情,所以我開始讓它更容易調試。我看到它在你的鏈接中工作,所以我希望能夠把它移過來。感謝幫助。 – Don