Я использую этот фрагмент jQuery для добавления переключателей в флажки, то есть для проверки только одного из каждой группы.
$("input:checkbox").click(function()
{
$("input:checkbox:checked[name='" + this.name + "']")
.not(this).removeAttr("checked");
});
Это прекрасно работает, или, по крайней мере, я так думал, пока не обнаружил, что в Opera я все еще могу установить несколько флажков из одной группы, если я настаиваю. Быстро переключаясь между некоторыми флажками (щелкая как маньяк), я в конечном итоге получаю два (или более) проверенных.
Обычно считая JavaScript однопоточным, я был удивлен этим. Тем не менее, я знаю, что JavaScript не всегда однопоточный, как кажется (см. этот ответ ), и я предполагаю, что это как-то вызывает такое поведение. Как иначе может случиться?
Если мое предположение верно, может ли кто-нибудь объяснить, что происходит? В ответе, который я на вас ссылаюсь, можно прочитать:
Аналогичным образом, вызывая click () для элемента, который его предоставляет, немедленно вызывает обработчик onclick во всех браузерах (по крайней мере, это соответствует!).
Это представляется актуальным, за исключением того, что это происходит только с Opera (я пробовал с IE (8), FF, Chrome и Safari).
Любой вклад приветствуется!