寫這個函數有沒有更高效的方法?不需要寫這個函數有沒有更高效的方法?
$('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
}
}
寫這個函數有沒有更高效的方法?不需要寫這個函數有沒有更高效的方法?
$('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
}
}
的else if
,只是一個if/else
會做到這一點:
$('input').change(function() {
if($(".radios").is(":checked")){
// do something
} else {
// do something
}
}
:
$('input').change(function() {
if($("#m1, #m2, #m3, #m4, #m5").is(":checked")){
// do something
} else {
// do something
}
}
你也可以爲了使選擇更短的添加一個類的元素
另一種方法,如果兩個if/else
塊都有很多代碼行,則可以將它們移動到指定函數並使用三元運算符:
$('input').change(function() {
return $("#m1, #m2, #m3, #m4, #m5").is(":checked") ? funcForChecked() : funcForUnchecked();
}
內部事件監聽器,你有代表觸發事件的元素this
對象,所以你可以寫:
$('input').change(function() {
if($(this).is(":checked")){
// do something
return;
}
// do something
}
而不是引用所有的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:
<div id="m15">
</div>
和改變事件綁定到:
$('#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
});
您當前的代碼勢必所有input
元素,這意味着如果一個人改變了一些其他控制它仍將觸發;在我看來,這是不受歡迎的行爲。
請參閱this fiddle這兩個代碼。
從'else'測試中刪除'if($(「#m1,#m2,#m3,#m4,#m5」)。(「:not(:checked)」))''。 –
他們是單選按鈕。 –