我遇到了一个似乎不对的问题。我在DOM中的同一级别上有一对锚标签。结构如下:
div.mcoup
div.lcoup
div.rcoup
div.rcoupmeta
a.rcoupedit
a.rcoupdelete
div.updcoup
div.delcoup
这是我正在使用的脚本:
$('div.delcoup').hide();
$('a.rcoupdel').click(function() {
$(this).parent().parent().next('div.delcoup').slideToggle(400);
$('div.updcoup').slideUp(400);
$('div.crecoup').slideUp(400);
return false;
});
$('div.updcoup').hide();
$('a.rcoupedit').click(function() {
$(this).parent().parent().next('div.updcoup').slideToggle(400);
$('div.delcoup').slideUp(400);
$('div.crecoup').slideUp(400);
return false;
});
这里奇怪的是a.rcouped正确地定位并影响div.updcoup,而使用相同的代码,a.rcoupdelete似乎对div.delcoup没有任何作用。它确实可以滑动其他元素。我的想法是,从a.rcoupdelete我们必须向上移动两个级别,然后找到具有delcoup类的下一个div。显然有些不对劲。
如何正确定位div.delcoup?
答案 0 :(得分:3)
.next()
专门选择DOM中的下一个项目(在同一级别)。 .updcoup
版本正常工作,因为实际上,在找到锚点父级的父级(即div.rcoup
)后,.next()
元素为div.updcoup
。
要查看所有所选元素之后的元素,请使用.nextAll()
:
$(this).parent().parent().nextAll('div.delcoup').slideToggle(400);