Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同div中的jquery同级选择器_Jquery_Css Selectors_Siblings - Fatal编程技术网

不同div中的jquery同级选择器

不同div中的jquery同级选择器,jquery,css-selectors,siblings,Jquery,Css Selectors,Siblings,我是jquery的新手,试图让用户帮助我的代码正常工作,但我现在遇到了麻烦 我想让我的摄影网站在顶部有按钮,当你点击一个按钮时,你点击的类别即“风景”、“肖像”、“婚礼”显示所有带有这些标签的帖子div class。我让它在小提琴中工作,但当我试图将div环绕在帖子和按钮上以将它们放置在页面上时,同级选择器会中断 旧的工作小提琴这里没有div包装: 这张用div包装纸的破小提琴: 我已经在顶部的按钮和上下文test&test2中添加了包装器,但是现在显然兄弟选择器不起作用 我如何仍然拥有我的站点

我是jquery的新手,试图让用户帮助我的代码正常工作,但我现在遇到了麻烦

我想让我的摄影网站在顶部有按钮,当你点击一个按钮时,你点击的类别即“风景”、“肖像”、“婚礼”显示所有带有这些标签的帖子div class。我让它在小提琴中工作,但当我试图将div环绕在帖子和按钮上以将它们放置在页面上时,同级选择器会中断

旧的工作小提琴这里没有div包装:

这张用div包装纸的破小提琴:

我已经在顶部的按钮和上下文test&test2中添加了包装器,但是现在显然兄弟选择器不起作用

我如何仍然拥有我的站点功能并使用div包装器在页面上重新定位它们?我不再需要兄弟选择器了吗


谢谢大家!

在HTML中,ID应该是唯一的。在第二个不工作的提琴中,您有三个带有id测试的div。

在HTML中,id应该是唯一的。在第二个不工作的小提琴中,您有三个id测试的div。

您的div不再是兄弟姐妹,固定版本可以是

您的div不再是兄弟姐妹,固定版本可以是

如果您将图片包装在id测试的div中,您可以执行以下操作:

$('#test .post').hide();
也就是说,隐藏类为“.post”的元素,这些元素位于“test”div内


演示:

如果您已使用id测试将图片包装在一个div中,则可以执行以下操作:

$('#test .post').hide();
也就是说,隐藏类为“.post”的元素,这些元素位于“test”div内


演示:

您只需将选择器修改为:

$('button').click(function() {
    $('div.post').hide()
    $('.' + this.id).show(500);
});

当然,使用$'div.post'将使用post类处理所有div元素。要将响应仅限于特定的div,可以指定父容器元素,然后使用find仅处理您特别感兴趣的那些元素,例如:

$('button').click(function() {
    $(parentElementSelector).find('.post').hide()
    $('.' + this.id).show(500);
});

请注意,我还没有纠正多id问题,但我建议使用一个类,或者,由于您没有在jQuery中使用它,我可以在您的问题中看到,只需删除id即可。您只需将选择器修改为:

$('button').click(function() {
    $('div.post').hide()
    $('.' + this.id).show(500);
});

当然,使用$'div.post'将使用post类处理所有div元素。要将响应仅限于特定的div,可以指定父容器元素,然后使用find仅处理您特别感兴趣的那些元素,例如:

$('button').click(function() {
    $(parentElementSelector).find('.post').hide()
    $('.' + this.id).show(500);
});

注意,我还没有纠正多重ID问题,但是我建议使用类,或者因为您没有在jQuery中使用它,所以我可以在您的问题中看到,简单地删除ID。

请考虑将您的问题中的两个代码片段的相关部分或代码的单个版本张贴上带有注释的修订。fiddle是个好主意,但是堆栈溢出的目标是自包含的,如果$Devty禁止jsfiddle离线,您的问题将留给孤儿,对未来访问者没有多大用处。请考虑将您的问题中的两个代码片段的相关部分或代码的单个版本与注释标记的修订一起张贴。小提琴是一个好主意,但堆栈溢出的目标是自包含的,如果$Devty禁止JSFIDLE在某个地方脱机,您的问题将被孤立,对未来的访问者没有多大用处。这在一般意义上可能是正确的,但这并不是为什么jQuery代码在第二阶段不起作用。这在一般意义上可能是正确的,但这并不是为什么jQuery代码在第二阶段不起作用。谢谢!那太棒了。非常简单,谢谢你!那太棒了。非常简单,谢谢你。我来看看你的建议!谢谢你。我来看看你的建议!谢谢我也喜欢这个补丁!谢谢我也喜欢这个补丁!