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