Javascript jQuery显示隐藏查找下一个元素远近

Javascript jQuery显示隐藏查找下一个元素远近,javascript,jquery,jquery-selectors,show-hide,Javascript,Jquery,Jquery Selectors,Show Hide,这个show-hide函数尝试匿名执行此操作,而不需要为目标div维护唯一的id 我很难理解为什么我的var div选择器在示例4中不起作用,以及我如何才能使它在所示的所有示例中都起作用 $('.expander')。单击(函数(e) { e、 预防默认值(); var div=$(this.nextAll('div.content').first(); 如有需要(分区) { 如果(div.css('display')=“无”) { div.show(); $(此).removeClass(“已

这个show-hide函数尝试匿名执行此操作,而不需要为目标div维护唯一的id

我很难理解为什么我的
var div
选择器在示例4中不起作用,以及我如何才能使它在所示的所有示例中都起作用

$('.expander')。单击(函数(e)
{
e、 预防默认值();
var div=$(this.nextAll('div.content').first();
如有需要(分区)
{
如果(div.css('display')=“无”)
{
div.show();
$(此).removeClass(“已关闭”);
$(此).addClass(“打开”);
}
其他的
{
隐藏分区();
$(此).removeClass(“打开”);
$(此).addClass(“已关闭”);
}
}
});


显示内容
隐藏内容
其他内容 隐藏内容

内容
前三个例子效果很好。但是,当我部署这段代码时,我发现锚的编码方式存在差异。我正在寻找一个解决方案,无论锚是如何封装的

底线是我想选择锚定的下一个div.content,不管它是下一个,还是jQuery必须在DOM树上走一走才能找到它


我有一个这个代码的工作模型。

因为你锚定的
嵌套在一个span
中,而span又嵌套在
一个ptag

在例子4中,这是没有意义的
var div=$(this.nextAll('div.content').first()

对于示例#4您需要此选择器

var div = $(this).closest('p').nextAll('div.content').first();

我在父树上找到了这个函数,直到看到下一个目标div

var div = $(this).nextAll('div.content').first();
if (div.length == 0)
{
    div = $(this).parentsUntil('body').nextAll('div.content').first();
}

我真的不喜欢有条件的,但除非我找到更优雅的东西,否则我会坚持使用它。

我在网站范围内使用这个,在锚定标记的编码方式上有所不同。您的示例可能有效,但它特定于
P
标记。我希望有一个方法来编码,使其适用于所有人,而不仅仅是这个特殊情况。。。因为,坦白说,还有其他特殊情况。例如,无序列表中的锚定标记和div等。我希望知道post.ahhh中HTML的语法着色有什么问题。我在帖子中找到了语法颜色。:)