2015-05-27 58 views
0

我實現一個函數來檢查/取消選中單選按鈕。Truthy和falsey值(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(); 
})(); 
+1

'$(這).checked'是'undefined',因爲'checked'不是一個jQuery方法(或jQuery對象的屬性),因此'self.checked '是虛僞的。 –

回答

0

你有你的,如果錯了,你正在檢查一個jQuery對象的JavaScript屬性,你應該改變:

if (self.checked) { 

到:

if (self.prop('checked')) { 
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");