Это вики-ответ, объединяющий все разные ответы и варианты.
Вариант 1: Переместить элемент за экран вместо полного его скрытия
position: absolute;
top: -50px;
left: -50px;
Вариант 2: Используйте немного JavaScript, чтобы установить переключатель, отмеченный при нажатии метки
$("label").click(function(e){
e.preventDefault();
$("#"+$(this).attr("for")).click().change();
});
Вариант 3: Установить ширину и / или непрозрачность элемента равными нулю
width: 0;
/* and/or */
-moz-opacity:0;
filter:alpha(opacity:0);
opacity:0;
outline:none; /* this prevents IE8 from having the line around it even though it's invisible */
Вариант 4: Использовать другой браузер:)
По сути, в спецификации для этих вещей конкретно не указано, какое поведение использовать, но IE, как правило, придерживается позиции, что если его не видно, то он не работает. «Видеть» и «работать» могут означать разные вещи, но в этом случае это означает, что когда установлена display:none
, метка не активирует переключатель, что приводит к обычным обходным решениям, необходимым для столь многих вещей в IE.