【发布时间】:2016-04-29 20:23:51
【问题描述】:
我有一个结构如下的表格:
<table>
<tbody>
for loop here
<tr>
<td>Item X Attribute 1</td>
<td>Item X Attribute 2</td>
<td><button name="test" onclick="display_variants()">Hide my kids</button></td>
</tr>
<tr>
<tbody class="variants_info">
<tr>
<td>Item X Variant 1</td>
<td>Item X Variant 2</td>
</tr>
</tbody>
</tr>
endfor loop
</tbody>
</table>
因此该结构重复 Y 次。
我正在尝试制作一个隐藏所选行的tbody.variants 的脚本。
到目前为止,我所拥有的是:
<script>
function display_variant(){
if($('.variants_info').is(":visible")){
$('.variants_info').hide();
}
else{
$('.variants_info').show();
}
}
</script>
但这会隐藏 ALL 行中的变体。
有没有办法选择特定行的孩子?另外我怎样才能从 tbody.variants 隐藏开始? (从我访问页面时开始)。
更新: 我已经设法将结构更改为:
<table>
for loop
<tbody>
<tr>
<td>image for el 1</td>
<td>attr for el 1</td>
<td><button type='button' name='test'>Click Me</button></td>
</tr>
for loop
<tr class='variants_info'>
<td>variant1 for el 1</td>
<td>variant2 for el 1</td>
</tr>
endfor
</tbody>
endfor
</table>
更新 2: 实际代码是这个:
<table class="pure-table pure-table-bordered">
<tbody>
{% for product in collection.products %}
{% if product.available %}
<tr class="{% cycle 'pure-table-odd', '' %}">
<td>
<img src="{{ product.featured_image.src | product_img_url: 'thumb' }}" alt="{{ product.featured_image.alt | escape }}" />
</td>
<td>{{ product.title }}</td>
<td style="text-align:right">
<button type="button" name="click_me">Click Me</button>
</td>
</tr>
{% for variant in product.variants %}
<tr>
<td>{{variant.title}}</td>
<td>{{variant.price | money }}</td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
</tbody>
</table>
<script>
$("td button").click(function(){
$(this).closest('tr').next().toggle();
})
</script>
我仍然无法让 JS 工作.. =/ 当前仅隐藏第一个变体(而不是单击按钮的所有变体)
【问题讨论】:
-
使用
$(this)。就像魔术一样。 -
隐藏你的孩子,隐藏你的无线网络
-
这是一个不相关的提示
$('.variants_info').toggle() -
我想我可能只是不明白 StackOverflow 是如何工作的,但是对于一个已接受答案的问题有一个开放赏金似乎是违反直觉的。接受的答案不应该自动获得赏金吗?
标签: javascript jquery html liquid