我正在实现一个检查/取消选中单选按钮的功能。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src = "http://code.jquery.com/jquery-2.1.4.min.js"> </script>
</head>
<body>
<form action="">
<input type="radio" name="sex" value="male" checked>Male<br>
<input type="radio" name="sex" value="female">Female
</form>
<script src = "../javascript/defaultCheckRadio.js"></script>
</body>
</html>
此代码正在执行此任务,但我不明白为什么永远不会触发if块中的警报。在我的理解中,它应该被触发,因为所有jQuery对象都是真实的。
(function () {
var inElement = $('input');
var changeCheck = {
init: function () {
this.check();
},
check: function () {
$.each(inElement, function() {
var self = $(this);
if (self.checked) {
alert("if condition");
self.prop('checked',false);
} else {
alert("else");
self.prop('checked',true);
}
});
},
};
window.changeCheck = changeCheck.init();
})();
答案 0 :(得分:0)
你有错误,你正在检查jquery对象的javascript属性,你应该改变:
if (self.checked) {
为:
if (self.prop('checked')) {
答案 1 :(得分:0)
忘记jQuery并使用vanilla-js:
if (this.checked) {
alert("if condition");
this.checked = false;
} else {
alert("else");
this.checked = true;
}
注意它可以简化:
alert((this.checked = !this.checked) ? "else" : "if condition");