切换 $(this) 元素的兄弟元素的可见性 |没有唯一 ID [jQuery]

Posted

技术标签:

【中文标题】切换 $(this) 元素的兄弟元素的可见性 |没有唯一 ID [jQuery]【英文标题】:Toggle visibility of sibling element of $(this) element | No unique ID [jQuery] 【发布时间】:2017-08-22 19:54:25 【问题描述】:

我需要div.edit-button 来切换其兄弟div.additionalFieldForm

请注意,页面上有多个div.edit-buttondiv.additionalFieldForm,但我想定位与单击的div.edit-button 位于同一“系列”中的div.additionalFieldForm

$(".edit-button").click(function () 

  // PROBLEMATIC SELECTOR BELOW:
  $(this).closest("div").prev().toggle();

);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="customFieldUl">
  <li class="customFieldLi">
    <label class="top_title">Additional Field</label>
    <div class="additionalFieldForm">Content</div>
    <div class="edit-button">Edit</div>
    <div class="remove-button">Remove</div>
  </li>
  <li class="customFieldLi">
    <label class="top_title">Additional Field</label>
    <div class="additionalFieldForm">Content</div>
    <div class="edit-button">Edit</div>
    <div class="remove-button">Remove</div>
  </li>
</ul>

我尝试了其他选择器,但我不能专门针对被单击的编辑按钮的div.additionalFieldForm 兄弟。

编辑:我意识到一定存在潜在问题,因为选择器适用于 jsFiddle (http://jsfiddle.net/wf7jjoq7/),但不适用于我的网站,没有任何控制台错误。

【问题讨论】:

要隐藏附加字段标签吗? 不,我想在每次点击 div.edit-button 时切换 div.additionalFieldForm 的可见性。 【参考方案1】:

尝试使用siblings()

$(".edit-button").click(function ()   
  $(this).siblings(".additionalFieldForm").toggle();
);

【讨论】:

这也不起作用,我尝试了多个选择器,似乎没有一个起作用。【参考方案2】:

试试这个解决方案:

$(".edit-button").click(function () 

  // PROBLEMATIC SELECTOR BELOW:
  $(this).parent().find(".additionalFieldForm").first().toggle();

);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="customFieldUl">
  <li class="customFieldLi">
    <label class="top_title">Additional Field</label>
    <div class="additionalFieldForm"></div>
    <div class="edit-button">Edit</div>
    <div class="remove-button">Remove</div>
  </li>
  <li class="customFieldLi">
    <label class="top_title">Additional Field</label>
    <div class="additionalFieldForm"></div>
    <div class="edit-button">Edit</div>
    <div class="remove-button">Remove</div>
  </li>
</ul>

【讨论】:

【参考方案3】:

li 是共同的父母。所以,

$(".edit-button").click(function ()   
 $(this).closest("li").find(".additionalFieldForm").toggle();
);

【讨论】:

这对我也不起作用,也没有控制台错误。

以上是关于切换 $(this) 元素的兄弟元素的可见性 |没有唯一 ID [jQuery]的主要内容,如果未能解决你的问题,请参考以下文章

VUE 切换子组件元素可见性

根据验证结果切换元素可见性

在不“推”其他元素的情况下切换图像可见性的最佳方法是啥?

如何在列表视图索引中切换子元素的可见性?

selenium,html高宽设置成了0,会影响元素可见性,怎么手动修改某个元素的高宽?

淡入/淡出的简单切换不适用于过渡、不透明度和可见性