很难用jQuery选择div

时间:2018-04-20 07:55:55

标签: jquery html css

我一直试图在我的DOM中选择一个特定的div而没有成功,我找不到我做错了什么。你能帮我吗?

所以这是我的HTML代码:

<div class="small" id="CV"><h1>Cliquez ici pour ouvrir mon CV</h1></div>
<div class="big" id="CVLarge">
  <!-- DOIT RESTER SOUS .big -->
  <img src="../Images/aPropos/fermer.png" alt="fermer" title="fermer">
  <h1>Diplômes</h1> <!-- etc etc-->
</div>

.big在页面加载时为display:none

点击.big时,有一个简短的jQuery代码可以打开.small。这个工作正常。

$(".small").on("click", function(){
  $(this).fadeOut();
  $(this).next().slideToggle();
});

当我尝试通过单击十字按钮(html中的图像alt:“fermer”)来关闭.big时出现问题。我希望它隐藏.big并再次显示.small

这是我的尝试:

$(".big img").on("click", function(){
  $(this).parent().slideToggle();
  $(this).parent().closest(".small").fadeIn();
});

.big切换回display:none,但.small拒绝出现在我尝试的任何内容中。

让你知道我尝试了什么:

  • 使用.big打开replaceWith()的jQuery的先前版本,我想可能会让.small从DOM中消失,因此无法再次出现,但即使我更改为一个更“一步一步”的jQuery,问题仍然存在。
  • 我想知道closest()是否只检测元素的父母?但后来我不知道如何从“img”获得.small
  • 当我写$("#CV")时它起作用,但我需要这个代码不那么具体,因为jQuery适用于具有不同id的几个盒子。

感谢您的关注。我完全是自学成才,所以如果我犯了明显的错误,请指出它们(/ω\)

2 个答案:

答案 0 :(得分:1)

用于遍历class small的选择器是错误的。您需要使用.prev()选择器而不是.closest()作为元素的兄弟元素,使用类big:

$(this).parent().prev(".small").fadeIn();

答案 1 :(得分:0)

尝试使用prev()而不是nearest()。

$(".big img").on("click", function(){
$(this).parent().slideToggle();
$(this).parent().prev().fadeIn();
});