jQuery:使用 parent()、next() 单击单选按钮上的样式和取消样式
jQuery: styling and unstyling on click radio button using parent(), next()
我有3个相同的部分。 它们彼此完全相同。
我想要实现的是当我单击".rad1"(第一个单选按钮)时,它会设置其标签样式。
当我单击".rad2"时,它应该取消第一个单选按钮的样式化,并将第二个单选按钮风格化。
我只希望它发生在它自己的部分中,也就是说,当我单击一个部分时,样式仅适用于该部分,而不适用于其他部分。
这就是我所拥有的,但我还没有找到实现它的方法:
$('.rad1').click(function() {
$(this).parent('.label1').css('background', 'red');
});
$('.rad2').click(function() {
$(this).parent().next('.label1').css('background', 'transparent');
$(this).parent('.label2').css('background', 'red');
});
.form-section {
background: orange;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
我会这样做:
$('input[name="rad"]').click(function() {
$(this).closest('form').find('label').css('background', 'transparent')
$(this).parent().css('background', 'red');
});
$('input[name="rad"]').click(function() {
$(this).closest('form').find('label').css('background', 'transparent')
$(this).parent().css('background', 'red');
});
.form-section {
background: orange;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<label for="radio" class="label1">
<input type="radio" class="rad1" name="rad">First
</label>
</div>
<div class="second">
<label for="radio" class="label2">
<input type="radio" class="rad2" name="rad">Second
</label>
</div>
</form>
</div>
添加和删除类可能也更好,而不是使用 .css() 设置标签样式。
$('.rad1').click(function(){
$(this).parent()
.css('background','red');
});
$('.rad2').click(function(){
$(this).closest('div')
.prev().find('.label1')
.css('background','transparent');
$(this).parent()
.css('background','red');
});
有很多更好的方法,但我遵循你的:
$('.rad1').click( function() {
$(this).parent('.label1').css('background', 'red');
$('.rad2').parent('.label2').css('background', 'transparent');
});
$('.rad2').click( function() {
$(this).parent('.label2').css('background', 'red');
$('.rad1').parent('.label1').css('background', 'transparent');
});
如果你对结构进行轻微的更改,这也可以在没有javascript的情况下完成,纯粹在CSS中。
我首先复制了 j08691 的代码片段,然后注释掉了 javascript 并移动了每个单选按钮的label
,使其跟随而不是包含<input>
。
更改后,您可以编写一个 CSS 选择器来定位标签(如果它是 :checked
单选按钮的同级)。未选中的按钮将保留其继承的橙色背景。
/*$('input[name="rad"]').click(function() {
$(this).closest('form').find('label').css('background', 'transparent')
$(this).parent().css('background', 'red');
});*/
.form-section {
background: orange;
border: 1px solid black;
}
.form-section input[type="radio"]:checked + label {
background: red;
}
<div class="form-section">
<form action="">
<div class="first">
<input type="radio" class="rad1" name="rad">
<label for="radio" class="label1">First</label>
</div>
<div class="second">
<input type="radio" class="rad2" name="rad">
<label for="radio" class="label2">Second</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<input type="radio" class="rad1" name="rad">
<label for="radio" class="label1">First</label>
</div>
<div class="second">
<input type="radio" class="rad2" name="rad">
<label for="radio" class="label2">Second</label>
</div>
</form>
</div>
<!------------SECTION-->
<div class="form-section">
<form action="">
<div class="first">
<input type="radio" class="rad1" name="rad">
<label for="radio" class="label1">First</label>
</div>
<div class="second">
<input type="radio" class="rad2" name="rad">
<label for="radio" class="label2">Second</label>
</div>
</form>
</div>
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 将样式表插入iframe
- 跟踪在页面加载时应用内联样式的JavaScript
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 定义完全独立的样式信息
- 使用Jquery选择或取消选择ListView中的所有复选框
- W3C循环样式的JavaScript
- jQuery/JavaScript在线公文包表单-打印样式表
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- FF和Chromium中CSS样式按钮的外观差异
- 使用jquery选中/取消选中单个复选框
- 如何首先设置样式<td>表中包含在窗体中的元素
- 取消重置由外部样式表定义的样式
- 取消:活动元素样式
- 单击时更改 DIV 的样式,取消单击时再次更改
- 为什么我不能取消 TR 的样式
- jQuery:使用 parent()、next() 单击单选按钮上的样式和取消样式
- 如何使用react切换复选框以更改样式为取消样式