我试图清除父元素的每个子元素中的数据,而不删除(或隐藏)实际的子元素。
要重现问题:
- 输入
Test1
和Test2
的数据 - 单击复选框“使用实际数据”,然后输入
Test 3
和Test 4
的数据。 - 按下“清除测试1和2的元素数据”按钮。
这是为了删除innerHTML
数据,而不是元素本身。
我希望元素保持可见和可用,只是没有任何数据。我只希望数据被清除。
我该怎么做?
$(function() {
$("#actual").click(function() {
if ($("#actual").is(":checked")) {
$("#utility-info").hide();
$("#actual-utils").show();
} else {
$("#utility-info").show();
$("#actual-utils").hide();
}
});
$("#clear-values").click(function() {
$("#utility-info").html('');
});
});
#actual-utils {
display: none;
}
span {
padding: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="actual" name="actual-util-info"> Use actual data
<div> </div>
<div id="energy-info">
<div id="utility-info">
<div>Test 1 <input id="test1" type="number" name="test1"></div>
<div>Test 2 <input id="test2" type="number" name="test2"></div>
</div>
<div id="actual-utils">
<div>Test 3 <input id="actual1" type="number" name="actual1"></div>
<div>Test 4 <input id="actual2" type="number" name="actual2"></div>
</div>
<div> </div>
<button id="clear-values">Clear Element Data for Tests 1 & 2</button>
</div>
2条答案
按热度按时间nlejzf6q1#
这个问题是因为您正在清除
#utility-info
的 * 整个 * 内容,其中包含input
元素及其值。要解决此问题,请将选择器更改为直接针对
input
元素,然后使用val('')
清除值。还请注意,您可以通过缓存在调用DOM时创建的jQuery对象,以及通过使用
toggle()
方法来隐藏/显示基于checkbox的booleanchecked
属性的div
元素,来改进逻辑并使其更加简洁。下面是一个工作示例:
km0tfn4u2#
“best™”可能是实际使用声明式HTML,它可以在没有JS的情况下为您完成所有这些。
<form>
及其所有内部<input>
元素可以通过<button type="reset">
(或等效的<input type="reset">
)重置为原始值。除了对AT和机器完全清楚你的标记是什么,以及在JS被禁用的地方工作之外,它还允许你设置一个初始值并将其重置回来。