我在一系列div之后有一系列<div class="clear-both"></div>
。
我想删除显示该复选框后显示的所有<div class="clear-both"></div>
。
例如,
<input type="checkbox" value="male"> Male?
<div class="clear-both"></div>
如果用户选中该框,我希望其下方的<div class="clear-both"></div>
消失。
页面上有大约十二个clear-both div的实例。
我假设我必须为每个复选框设置一个类,以便在用户选中该框时进行监听,但我不确定如何删除复选框下面的clear-both div。
感谢任何帮助,谢谢。
答案 0 :(得分:2)
$('input[type=checkbox]').on('click', function() {
$(this).next('div.clear-both').hide();
}):
答案 1 :(得分:1)
我想删除任何显示内容 在那个复选框出现之后。
您可以像这样使用next()
:
$('input[type=checkbox]').click(function(){
$(this).next('div.clear-both').remove();
});
这将删除所点击的复选框中的下一个div
元素,无论点击哪个。
更多强>
答案 2 :(得分:1)
虽然使用jQuery / JavaScript很容易做到这一点,但你也不需要 来使用JavaScript;可以使用CSS代替(取决于您的跨浏览器要求):
.clear-both {
height: 1em;
background-color: #0f0;
}
input:checked + .clear-both {
background-color: #00f;
}
注意,我之所以使用颜色更改只是因为我不确定您希望.clear-both
可见/隐藏的状态。显然,根据您的需要调整风格。
为了进一步说明这种方法的局限性,就跨浏览器兼容性而言,根据Sitepoint,任何版本的Internet Explorer都不支持此功能(尽管它们只列出了IE版本8)。 / p>
但是Quirksmode clarifies that IE 9+支持:checked
伪类。
答案 3 :(得分:1)
如果你不想使用jQuery:
window.onload = function(){
var elements = document.getElementsByTagName("input");
for(var i=0;i<elements.length;i++) {
var element = elements[i];
if(element.type == "checkbox")
element.onchange = function() { this.nextElementSibling.style.display = "none"; };
}
};
答案 4 :(得分:0)
使用next
功能的两个建议仅适用于下面的一个div。你说你想要删除所有这些,所以你应该看看nextAll
函数: