jquery - 清空并附加到最近的 DIV
问题描述
我在这里整理了一个 JSFiddle:
https://jsfiddle.net/Rockhopper92/zrq5L2dj/
我的问题是试图找到最近的 div 并清空然后追加到其中。我的理解是最接近的只能找到父元素,但我不确定为什么找不到它。
我尝试过移动元素,但这显然会破坏切换的工作。
我的 jQuery 看起来像这样:
$(".subscribedTo").on("click", function() {
if ($(this).is(":checked")) {
var labelText = "Subscribed";
} else {
var labelText = "Unsubscribed";
}
$(this).closest(".labelText").empty();
});
受影响的 HTML 是这样的:
<div class="block">
<label class="label">
<div class="toggle">
<input class="subscribedTo" type="checkbox" name="check" value="check" checked>
<div class="toggle-inner">
<div class="indicator"></div>
</div>
</div>
<div class="labelText">Subscribed</div>
</label>
</div>
我不确定我能做些什么来用那个jQuery识别labelText div并附加到它,因为页面上会有多个具有相同类值的div。
解决方案
您遇到的问题是closest()
寻找父元素,但.labelText
您要寻找的元素是复选框的兄弟。因此,您可以使用siblings()
或closest().find()
,我个人更喜欢后者,因为它更强大。
另请注意,您可以提供一个函数来根据复选框属性的text()
状态设置新值。checked
您不需要将empty()
and append 作为单独的调用。尝试这个:
$(".subscribedTo").on("click", function() {
var checkbox = this;
$(this).closest('.block').find(".labelText").text(function() {
return checkbox.checked ? 'Subscribed' : 'Unsubscribed';
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="block">
<label class="label">
<div class="toggle">
<input class="subscribedTo" type="checkbox" name="check" value="check" checked>
<div class="toggle-inner">
<div class="indicator"></div>
</div>
</div>
<div class="labelText">Subscribed</div>
</label>
</div>
推荐阅读
- java - 如何反转整数的数字?
- api - 无法在 IBM watson NLU API 资源管理器上发布/获取请求
- javascript - 使用 redux 时在 reactjs 中克隆我们在 this.props 中收到的 props
- css - CSS:为兄弟姐妹添加相同的高度
- swift - 旋转时单元框大小发生变化
- c - 如何在 C 编程中访问共享库函数时修复分段错误?
- php - 单元测试代码覆盖率显示为零?
- asp.net-core - 我应该向 kubernetes 集群上的 consul 注册 pod 或 kubernete 服务吗
- python - 为什么这个 python 代码不打印字谜?
- c# - HttpRequestMessage POST