html - 如何使用一个元素的子元素通过 jQuery 切换另一个元素上的类?
问题描述
我正在尝试使用 jQuery 编辑 wordpress 插件。我在布局的一行(.first-row)中添加了一个按钮,并尝试使用它来切换下面一行(.second-row)上的类。
我不知道该怎么做——我试过用.closest
它来选择第二行并切换类,但这似乎不起作用。我也尝试过使用.next
and .find
,但没有任何成功。
我不记得我是怎么做到的,但我设法早点接近 - 问题是如果我点击任何一个按钮,它会切换两个 div 上的类与该类,而不是特定下面的类按钮单击。(这就是为什么我包括两个相同的布局。)
这是我的 JS Fiddle 示例。
https://jsfiddle.net/v71sytLf/5/
HTML
<div class="wrapper">
<div class="upper-section"></div>
<div class="lower-section">
<div class="first-row"></div>
<div class="second-row"></div>
</div>
</div>
<div class="wrapper">
<div class="upper-section"></div>
<div class="lower-section">
<div class="first-row"></div>
<div class="second-row"></div>
</div>
</div>
CSS
.wrapper {
position:relative;
top:0;
float:left;
display:inline-block;
width:275px;
background:pink;
margin-right:24px;
}
.upper-section {
height:200px;
}
.first-row {
height:55px;
background:purple;
}
.second-row {
height:55px;
background:yellow;
}
.second-row.open {
background:blue;
}
.button {
position:absolute;
display:block;
right:0;
background:orange;
}
jQuery
jQuery(document).ready(function($) {
$(".first-row").append("<span class='button'>Button</span>");
$(".button").click(function() {
$(this).closest(".second-row").toggleClass("open");
});
});
解决方案
首先,您需要直接拥有按钮 DOM,以便更轻松地触发操作。出于可访问性的原因,更喜欢元素作为按钮,它可以做某事但不链接到任何东西。然后,使用 jQuery 的 parent 和 next 选择器相对触发。
<div class="wrapper">
<div class="upper-section"></div>
<div class="lower-section">
<div class="first-row">
<button class="button">Button</button>
</div>
<div class="second-row"></div>
</div>
</div>
<div class="wrapper">
<div class="upper-section"></div>
<div class="lower-section">
<div class="first-row">
<button class="button">Button</button>
</div>
<div class="second-row"></div>
</div>
</div>
jQuery(document).ready(function($) {
$(".button").click(function() {
$(this).parent().next(".second-row").toggleClass("open");
});
});
这是更新的小提琴:https ://jsfiddle.net/0xq8w9sm/1/
推荐阅读
- unity3d - 在移动和旋转线条时获取线条渲染器的位置
- python - Python Selenium Autologin 问题,以防网络表单中没有 ID 值
- angular - 同一个变量的输入和输出
- java - 如何在firebase数据库android中更新图像url索引
- node.js - 计算嵌套字段的出现次数
- python - django zip 不等长列表
- ionic-framework - 使用 moment.js 从字符串中的日期获取 ISO 8601 日期
- android - 如何在 MPAndroidChart 的 PieChart 中设置颜色
- javascript - 通过给出时间来获取时区名称
- .htaccess - 麻烦 htaccess 重定向非 www 页面