jQuery切换表中的下一行

Don*_*Don 0 jquery dom toggle

我不确定为什么这不起作用......

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>
Run Code Online (Sandbox Code Playgroud)

那我正在使用的jQuery是......

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

我已经尝试将细节类移动到TR.我想要的是当有人点击"详细信息"链接时,以下TR应该切换.我在顶级表上放了一个ID,并提醒父母的attr('id'),这是有效的.将".siblings"更改为".find"可以切换所有内容.

谢谢你的帮助.

San*_*der 5

你的html格式错误,你的jquery没有选择正确的项目...你去了表元素,然后尝试sibbling但没有任何结果.

试试这个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 class="details">
    <td colspan="2">
    stuff
    </td>
  </tr>
  <?php
} ?>
</table>
Run Code Online (Sandbox Code Playgroud)

这个jquery:

$(function(){
  $('.trigger').click(function() {
    $(this).parents("tr").next().slideToggle();
    return false;
  });
});
Run Code Online (Sandbox Code Playgroud)

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

编辑 只是提到我改变了什么

你有一个<td>缺少它的开放标签>,我也移动了要显示/隐藏class="details"<tr>元素.

在jquery中,我改变了你的选择器上升到表,进入表行并选择了.next()表行(实际上是需要显示或隐藏的那一行.然后切换那一行.

你可以做的改进:首先隐藏tr.details槽css

tr.details {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)