我想使用複選框來模擬單選按鈕的行爲,這表示:使用複選框模擬單選按鈕,只觸發一次更改事件?
當複選框被選中,所有其他複選框具有相同的名稱(這裏選擇器)都選中
但是,如果我嘗試做類似的事情:
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
});
這會觸發change
事件兩次。
如果我嘗試添加e.preventDefault
:
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
e.preventDefault();
});
任何事件都被觸發,該複選框未選中。
最後,如果我嘗試觸發事件自己:
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
e.preventDefault();
$(this).change();
});
的change
事件也被稱爲兩次。
有關信息,我所有的複選框都有唯一的ID。
什麼是合適的方式來禁用除選中的複選框外的所有複選框?
這可能是一個很明顯的問題在這裏,但如果你想有一個複選框,像一個單選按鈕,爲什麼不直接使用一個單選按鈕? –
因爲該行爲取決於其他地方檢查的內容:在某些情況下,用戶可能能夠檢查多個複選框。 –
您可以使用超時並忽略觸發的事件,例如兩次在100毫秒,但這將是非常骯髒的;) – 23tux