检查是否定义了复选框的更好方法是什么?

Hai*_*ood 2 javascript jquery

目前我正在使用

var email, fax, sms = false;  
    if($('#uemail:checked').val() != undefined)  
        email = true;  
    if($('#ufax:checked').val() != undefined)  
        fax = true;  
    if($('#usms:checked').val() != undefined)  
        sms = true;  
Run Code Online (Sandbox Code Playgroud)

但它写这么长的路.

有没有更好的方法来写这个?

use*_*716 10

试试这个:

if($('#uemail').is(':checked'))
    email = true;
Run Code Online (Sandbox Code Playgroud)

甚至更短:

email = $('#uemail').is(':checked');
Run Code Online (Sandbox Code Playgroud)

你将:checked选择器传递给jQuery的.is()方法,该方法返回一个布尔值;


Nic*_*ver 5

你可以.length像这样使用:

var email = $('#uemail:checked').length,
      fax = $('#ufax:checked').length,
      sms = $('#usms:checked').length;
Run Code Online (Sandbox Code Playgroud)

.length是匹配元素数组的长度...如果未检查,则为0.而且,由于在JavaScript中.length == 0提供,.length == false您可以执行上面的简短版本.如果你需要一个真/假,那就.length != 0改为:)

或者,另一种产生布尔值的替代方法,只需使用DOM .checked属性:

var email = $('#uemail')[0].checked,
      fax = $('#ufax')[0].checked,
      sms = $('#usms')[0].checked;
Run Code Online (Sandbox Code Playgroud)

或者,根本没有使用jQuery getElementById():

var email = document.getElementById('uemail').checked,
      fax = document.getElementById('ufax').checked,
      sms = document.getElementById('usms').checked;
Run Code Online (Sandbox Code Playgroud)