Truthy和falsey值(jQuery对象)

时间:2015-05-27 01:04:23

标签: javascript jquery

我正在实现一个检查/取消选中单选按钮的功能。

<!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();
})();

2 个答案:

答案 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");