jQuery无法使用我的代码
我有以下标记jQuery无法使用我的代码,jquery,this,Jquery,This,我有以下标记 <tbody> <tr> <td class="expand">Showroom area - New Display Zone</td> <td>300</td> <td>350</td> <td class="shortfall">50</td>
<tbody>
<tr>
<td class="expand">Showroom area - New Display Zone</td>
<td>300</td>
<td>350</td>
<td class="shortfall">50</td>
</tr>
<tr class="hidden">
<td>Core Display</td>
<td>9</td>
<td>10</td>
<td>1</td>
</tr>
<tr class="hidden">
<td>R8</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr class="hidden">
<td>Highlight Car</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td class="expand">Showroom - Handover Bay</td>
<td>300</td>
<td>350</td>
<td class="shortfall">50</td>
</tr>
<tr class="hidden">
<td>Core Display</td>
<td>9</td>
<td>10</td>
<td>1</td>
</tr>
<tr class="hidden">
<td>R8</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr class="hidden">
<td>Highlight Car</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
我想让这段代码切换前3个tr.hidden类,因为它与第一个td.expand类直接相关,但运行这段代码会切换所有tr.hidden类以显示
有人知道我做错了什么吗?你想用
parent()
而不是parents()
你想用parent()
而不是parents()
基本上,你做错的不是告诉jQuery你只想处理一些tr.hidden
元素。您还使用了家长
(复数),几乎可以肯定您想要家长
(单数)
可以使用nextUntil
收集元素,直到条件匹配为止。在这种情况下,您可以使用nextUntil
收集行,直到找到一个未tr.hidden
的行。因此:
$(this).parent().nextUntil(':not(tr.hidden)').toggle();
|
交替-这将是我的首选解决方案-您可能会考虑稍微改变结构,并使用多个<代码> TBOSUT/CODEN>元素,这些扩展/折叠组中的每一个元素:
<tbody>
<tr>
<td class="expand">...</td>
...
</tr>
<tr class="hidden">
...
</tr>
...
</tbody>
<tbody>
<tr>
<td class="expand">...</td>
...
</tr>
<tr class="hidden">
...
</tr>
...
</tbody>
|基本上,你做错了的是没有告诉jQuery你只想处理一些
tr.hidden
元素。您还使用了家长
(复数),几乎可以肯定您想要家长
(单数)
可以使用nextUntil
收集元素,直到条件匹配为止。在这种情况下,您可以使用nextUntil
收集行,直到找到一个未tr.hidden
的行。因此:
$(this).parent().nextUntil(':not(tr.hidden)').toggle();
|
交替-这将是我的首选解决方案-您可能会考虑稍微改变结构,并使用多个<代码> TBOSUT/CODEN>元素,这些扩展/折叠组中的每一个元素:
<tbody>
<tr>
<td class="expand">...</td>
...
</tr>
<tr class="hidden">
...
</tr>
...
</tbody>
<tbody>
<tr>
<td class="expand">...</td>
...
</tr>
<tr class="hidden">
...
</tr>
...
</tbody>
|+1,但如果在
元素之间存在不匹配的。隐藏。展开元素,则这将不起作用。您可以使用第二个参数nextUntil
来过滤匹配的选择,以仅包括匹配的元素。hidden
@jamesalardice:似乎可以与给定的结构配合使用,我怀疑这是一个相当规则的结构(摘要行后跟详细信息行,摘要行后跟详细信息行)。同意,它与问题中的结构配合得很好。我刚刚指出,如果要更改(可能是摘要行之后的另一行,但在.hidden
行之前),那么您的示例将不起作用,但是nextUntil('.expand','.hidden')
会起作用。@jamesalardice:除了expand
类位于td
上,而不是tr
上。但是.nextUntil('tr:has(td.expand)',.hidden')
会起作用,谢谢,知道它很有用。对于这类事情,我肯定倾向于使用多个tbody
元素。我喜欢用容器装这些东西。:-)哦,是的,那会教我正确地阅读代码!是的,我也最喜欢你的tbody
解决方案:)+1,但是如果在元素之间存在不匹配的。隐藏的。展开元素,这就行不通了。您可以使用第二个参数nextUntil
来过滤匹配的选择,以仅包括匹配的元素。hidden
@jamesalardice:似乎可以与给定的结构配合使用,我怀疑这是一个相当规则的结构(摘要行后跟详细信息行,摘要行后跟详细信息行)。同意,它与问题中的结构配合得很好。我刚刚指出,如果要更改(可能是摘要行之后的另一行,但在.hidden
行之前),那么您的示例将不起作用,但是nextUntil('.expand','.hidden')
会起作用。@jamesalardice:除了expand
类位于td
上,而不是tr
上。但是.nextUntil('tr:has(td.expand)',.hidden')
会起作用,谢谢,知道它很有用。对于这类事情,我肯定倾向于使用多个tbody
元素。我喜欢用容器装这些东西。:-)哦,是的,那会教我正确地阅读代码!是的,我也最喜欢你的tbody
解决方案:)