Jquery 有没有更有效的方法来编写这个函数?

Jquery 有没有更有效的方法来编写这个函数?,jquery,Jquery,有没有更有效的方法来编写这个函数 $('input').change(function() { if($("#m1, #m2, #m3, #m4, #m5").is(":checked")){ // do something } else if($("#m1, #m2, #m3, #m4, #m5").is(":not(:checked)")){ // do something } } 如果不需要if,只需if/else即可: $('

有没有更有效的方法来编写这个函数

$('input').change(function() {

    if($("#m1, #m2, #m3, #m4, #m5").is(":checked")){

    // do something
    }

    else if($("#m1, #m2, #m3, #m4, #m5").is(":not(:checked)")){

    // do something

    }

}

如果不需要
if
,只需
if/else
即可:

$('input').change(function() {
    if($("#m1, #m2, #m3, #m4, #m5").is(":checked")){
        // do something
    } else {
        // do something
    }
}
您还可以向元素中添加一个类,以缩短选择器:

$('input').change(function() {
    if($(".radios").is(":checked")){
        // do something
    } else {
        // do something
    }
}
另一种方法是,如果
if/else
块都有多行代码,则可以将它们移动到命名函数并使用三元运算符:

$('input').change(function() {
    return $("#m1, #m2, #m3, #m4, #m5").is(":checked") ? funcForChecked() : funcForUnchecked();
}

在事件侦听器中,您有表示触发事件的元素的
对象,因此您可以编写:

$('input').change(function() {

    if($(this).is(":checked")){
        // do something

       return;
    }

    // do something        
}

您可以使用一个类(即“checkbox”)来标记它们,而不是引用所有这些ID,并使用以下命令

if($('.checkbox:checked').length == $('.checkbox').length){ blah blah } ;

看到这把小提琴了吗?我想你有

<input id="m1" type="radio" name="groupName" />
...
<input id="m5" type="radio" name="groupName" />
或者,您可以更具体地使用类:

<div id="m15">
    ...
    <input id="m1" class="m15" />
</div>

$('#m15').change(function() {
    if ($(this).find('input.m15').is(":checked")) {
        // do something
    }
}
当前代码绑定到所有
输入
元素,这意味着即使其中一个更改了其他控件,它也会触发;在我看来,这是不受欢迎的行为


请参阅这两个代码。

测试中删除
如果($(“#m1,#m2,#m3,#m4,#m5”).is(“:not(:checked)”)
,它们是单选按钮。
$('#m15').change(function() {
    if ($(this).find('input').is(":checked")) {
        // do something
    }
}
<div id="m15">
    ...
    <input id="m1" class="m15" />
</div>

$('#m15').change(function() {
    if ($(this).find('input.m15').is(":checked")) {
        // do something
    }
}
$('#m15 input.m15').change(function() {
    // Triggered the first time - and all subsequent times
});