我有一个表结构:
<tr>
<td>
<a href="#" class="xx"></a>
</td>
<td>
data
</td>
</tr>
<tr>
<td>
<img src="#" class="cc" />
</td>
</tr>
<tr>
<td>
<a href="#" class="xx"></a>
</td>
<td>
data2
</td>
</tr>
<tr>
<td>
<img src="#" class="cc" />
</td>
</tr>
现在,在加载时,隐藏第2和第4行。点击<a>
后,其下一行<img>
将会显示。
为此,我写了:
$("a.xx").click(function (event) {
$(this).next(".cc").toggleClass();// not working
});
有任何线索吗?
修改
点击第1行<a>
后,它会显示第2行的<img>
,点击第3行<a>
时,它应显示第4行<img>
,只显示<img>
{ {1}}一次。
CSS
.cc {
display: none;
}
答案 0 :(得分:3)
编辑:根据进一步的说明,您需要再次点击以关闭打开的图片。
这样做:
$(this).closest('tr').next('tr').find("img.cc").toggle()
.closest('tr').siblings('tr').find("img.cc").hide();
或者这个,效率更高一点:
$(this).closest('tr').next('tr').find("img.cc").toggle(0, function() {
var $th = $(this);
if( $th.is(':visible') )
$th.closest('tr').siblings('tr').find("img.cc").hide();
});
编辑:根据说明,您似乎想要在下一行显示图片,并隐藏其余部分。
这样做:
$(this).closest('tr').next('tr').find("img.cc").show()
.closest('tr').siblings('tr').find("img.cc").hide();
原始回答:
这样做:
$(this).closest('tr').next('tr').find("img.cc").toggleClass('someClass');
jQuery的.next()
仅查看元素的兄弟。
您需要遍历.closest()
<tr>
元素,获取.next()
行,然后.find()
.cc
元素。
我还假设您将类名传递给.toggleClass()
,而不是在没有参数的情况下调用它。
否则,要显示<img>
,您可能会使用.show()
。