选中单选按钮时尝试使用 javascript 添加唯一 class
Trying to use javascript to add unique class when radio button checked
我正在尝试使用 java脚本来更改单选标签选中时的背景颜色。每个单选按钮将应用不同的 class 或颜色。由于 css 与插件冲突,我需要使用 java。还需要 radio value 字段用于动态目的,因此不能使用该字段添加 class.
这是我所在的位置:
$(window).load(function() {
$('#emailGroup1').change(function() {
if (this.checked) {
$(this).parent().addClass('Good');
} else {
$(this).parent().removeClass('Good');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked>
Pending
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good">
Good
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad">
Bad
</label>
</form>
</div>
我想让 java 脚本读取默认选中的单选按钮并在页面加载时应用 class。然后当用户选择不同的单选按钮时,class 从默认选中中删除并应用于选择。
试试这个
$('.emailGroup input').change(function() {
if (this.checked) {
$(this).parent().parent().addClass('Good');
} else {
$(this).parent().parent().removeClass('Good');
}
});
#confirmGroup{
color: red;
}
.Good {
color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Pending" >
Pending
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad
</label>
</form>
</div>
$('input[type=radio]')
选择器将事件绑定到所有无线电输入。并使用 .trigger()
方法在页面加载时调用无线电输入 change
事件。
$(window).load(function() {
$('input[type=radio]').change(function() {
if ($(this).is(':checked')) {
$(this).parent().addClass('Good');
} else {
$(this).parent().removeClass('Good');
}
}).trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked>
Pending
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good">
Good
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad">
Bad
</label>
</form>
</div>
你应该听单选按钮而不是标签,我看到你为标签设置了一个不唯一的 ID 这是错误的,html 标签的 ID 应该有一个唯一的值。
$(window).load(function() {
$('input[name=emailConfirm]').change(function() {
$('.emailGroup').removeClass('Good')
$(this).parent().addClass('Good');
});
});
.Good {
background: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup Good">
<input type="radio" name="emailConfirm" value="Pending" checked>
Pending</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad</label>
</form>
</div>
您的问题是由于您重复使用了无效的 id
属性。您可以改为使用常见的 class
属性来定位您的元素,然后根据需要应用 good
class。试试这个:
$('.email').change(function() {
$('.emailGroup.good').removeClass('good');
$(this).closest('.emailGroup').addClass('good');
});
.good { background-color: #0D0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked="true" class="email">
Pending
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good" class="email">
Good
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad" class="email">
Bad
</label>
</form>
</div>
另请注意,这可以通过稍微修改 HTML:
单独使用 CSS 来实现
.email:checked + label {
background-color: #0C0;
}
<div id="confirmGroup">
<form>
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked="true" class="email">
<label class="emailGroup" for="emailGroup1">
Pending
</label>
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good" class="email">
<label class="emailGroup" for="emailGroup2">
Good
</label>
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad" class="email">
<label class="emailGroup" for="emailGroup3">
Bad
</label>
</form>
</div>
$(window).load(function() {
$("input[type=radio]:checked").parent().css('background','yellow');
$('input[name=emailConfirm]').change(function() {
$('.emailGroup').css('background','none');
if($(this).val() == "Good"){
$(this).parent().css('background','green');
}
if($(this).val() == "Bad"){
$(this).parent().css('background','red');
}
if($(this).val() == "Pending"){
$(this).parent().css('background','yellow');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Pending" checked>
Pending</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad</label>
</form>
</div>
我正在尝试使用 java脚本来更改单选标签选中时的背景颜色。每个单选按钮将应用不同的 class 或颜色。由于 css 与插件冲突,我需要使用 java。还需要 radio value 字段用于动态目的,因此不能使用该字段添加 class.
这是我所在的位置:
$(window).load(function() {
$('#emailGroup1').change(function() {
if (this.checked) {
$(this).parent().addClass('Good');
} else {
$(this).parent().removeClass('Good');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked>
Pending
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good">
Good
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad">
Bad
</label>
</form>
</div>
我想让 java 脚本读取默认选中的单选按钮并在页面加载时应用 class。然后当用户选择不同的单选按钮时,class 从默认选中中删除并应用于选择。
试试这个
$('.emailGroup input').change(function() {
if (this.checked) {
$(this).parent().parent().addClass('Good');
} else {
$(this).parent().parent().removeClass('Good');
}
});
#confirmGroup{
color: red;
}
.Good {
color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Pending" >
Pending
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad
</label>
</form>
</div>
$('input[type=radio]')
选择器将事件绑定到所有无线电输入。并使用 .trigger()
方法在页面加载时调用无线电输入 change
事件。
$(window).load(function() {
$('input[type=radio]').change(function() {
if ($(this).is(':checked')) {
$(this).parent().addClass('Good');
} else {
$(this).parent().removeClass('Good');
}
}).trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked>
Pending
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good">
Good
</label>
<label id="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad">
Bad
</label>
</form>
</div>
你应该听单选按钮而不是标签,我看到你为标签设置了一个不唯一的 ID 这是错误的,html 标签的 ID 应该有一个唯一的值。
$(window).load(function() {
$('input[name=emailConfirm]').change(function() {
$('.emailGroup').removeClass('Good')
$(this).parent().addClass('Good');
});
});
.Good {
background: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup Good">
<input type="radio" name="emailConfirm" value="Pending" checked>
Pending</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad</label>
</form>
</div>
您的问题是由于您重复使用了无效的 id
属性。您可以改为使用常见的 class
属性来定位您的元素,然后根据需要应用 good
class。试试这个:
$('.email').change(function() {
$('.emailGroup.good').removeClass('good');
$(this).closest('.emailGroup').addClass('good');
});
.good { background-color: #0D0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked="true" class="email">
Pending
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good" class="email">
Good
</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad" class="email">
Bad
</label>
</form>
</div>
另请注意,这可以通过稍微修改 HTML:
单独使用 CSS 来实现.email:checked + label {
background-color: #0C0;
}
<div id="confirmGroup">
<form>
<input type="radio" name="emailConfirm" id="emailGroup1" value="Pending" checked="true" class="email">
<label class="emailGroup" for="emailGroup1">
Pending
</label>
<input type="radio" name="emailConfirm" id="emailGroup2" value="Good" class="email">
<label class="emailGroup" for="emailGroup2">
Good
</label>
<input type="radio" name="emailConfirm" id="emailGroup3" value="Bad" class="email">
<label class="emailGroup" for="emailGroup3">
Bad
</label>
</form>
</div>
$(window).load(function() {
$("input[type=radio]:checked").parent().css('background','yellow');
$('input[name=emailConfirm]').change(function() {
$('.emailGroup').css('background','none');
if($(this).val() == "Good"){
$(this).parent().css('background','green');
}
if($(this).val() == "Bad"){
$(this).parent().css('background','red');
}
if($(this).val() == "Pending"){
$(this).parent().css('background','yellow');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="confirmGroup">
<form>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Pending" checked>
Pending</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Good">
Good</label>
<label class="emailGroup">
<input type="radio" name="emailConfirm" value="Bad">
Bad</label>
</form>
</div>